This repository has no description
0

Configure Feed

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

feat: inline note viewer on url card

+439 -217
+83 -171
package-lock.json
··· 1127 1127 "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.4.tgz", 1128 1128 "integrity": "sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==", 1129 1129 "dev": true, 1130 + "peer": true, 1130 1131 "dependencies": { 1131 1132 "@babel/code-frame": "^7.27.1", 1132 1133 "@babel/generator": "^7.28.3", ··· 1796 1797 "url": "https://opencollective.com/csstools" 1797 1798 } 1798 1799 ], 1800 + "peer": true, 1799 1801 "engines": { 1800 1802 "node": ">=18" 1801 1803 }, ··· 1818 1820 "url": "https://opencollective.com/csstools" 1819 1821 } 1820 1822 ], 1823 + "peer": true, 1821 1824 "engines": { 1822 1825 "node": ">=18" 1823 1826 } ··· 1827 1830 "resolved": "https://registry.npmjs.org/@drizzle-team/brocli/-/brocli-0.10.2.tgz", 1828 1831 "integrity": "sha512-z33Il7l5dKjUgGULTqBsQBQwckHh5AbIuxhdsIxDDiZAzBOrZO6q9ogcWC65kU382AfynTfgNumVcNIjuIua6w==", 1829 1832 "dev": true 1830 - }, 1831 - "node_modules/@emnapi/core": { 1832 - "version": "1.10.0", 1833 - "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.10.0.tgz", 1834 - "integrity": "sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==", 1835 - "dev": true, 1836 - "license": "MIT", 1837 - "optional": true, 1838 - "dependencies": { 1839 - "@emnapi/wasi-threads": "1.2.1", 1840 - "tslib": "^2.4.0" 1841 - } 1842 - }, 1843 - "node_modules/@emnapi/runtime": { 1844 - "version": "1.10.0", 1845 - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.10.0.tgz", 1846 - "integrity": "sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==", 1847 - "license": "MIT", 1848 - "optional": true, 1849 - "dependencies": { 1850 - "tslib": "^2.4.0" 1851 - } 1852 1833 }, 1853 1834 "node_modules/@emnapi/wasi-threads": { 1854 1835 "version": "1.2.1", ··· 2285 2266 "os": [ 2286 2267 "aix" 2287 2268 ], 2288 - "peer": true, 2289 2269 "engines": { 2290 2270 "node": ">=18" 2291 2271 } ··· 2303 2283 "os": [ 2304 2284 "android" 2305 2285 ], 2306 - "peer": true, 2307 2286 "engines": { 2308 2287 "node": ">=18" 2309 2288 } ··· 2321 2300 "os": [ 2322 2301 "android" 2323 2302 ], 2324 - "peer": true, 2325 2303 "engines": { 2326 2304 "node": ">=18" 2327 2305 } ··· 2339 2317 "os": [ 2340 2318 "android" 2341 2319 ], 2342 - "peer": true, 2343 2320 "engines": { 2344 2321 "node": ">=18" 2345 2322 } ··· 2357 2334 "os": [ 2358 2335 "darwin" 2359 2336 ], 2360 - "peer": true, 2361 2337 "engines": { 2362 2338 "node": ">=18" 2363 2339 } ··· 2375 2351 "os": [ 2376 2352 "darwin" 2377 2353 ], 2378 - "peer": true, 2379 2354 "engines": { 2380 2355 "node": ">=18" 2381 2356 } ··· 2393 2368 "os": [ 2394 2369 "freebsd" 2395 2370 ], 2396 - "peer": true, 2397 2371 "engines": { 2398 2372 "node": ">=18" 2399 2373 } ··· 2411 2385 "os": [ 2412 2386 "freebsd" 2413 2387 ], 2414 - "peer": true, 2415 2388 "engines": { 2416 2389 "node": ">=18" 2417 2390 } ··· 2429 2402 "os": [ 2430 2403 "linux" 2431 2404 ], 2432 - "peer": true, 2433 2405 "engines": { 2434 2406 "node": ">=18" 2435 2407 } ··· 2447 2419 "os": [ 2448 2420 "linux" 2449 2421 ], 2450 - "peer": true, 2451 2422 "engines": { 2452 2423 "node": ">=18" 2453 2424 } ··· 2465 2436 "os": [ 2466 2437 "linux" 2467 2438 ], 2468 - "peer": true, 2469 2439 "engines": { 2470 2440 "node": ">=18" 2471 2441 } ··· 2483 2453 "os": [ 2484 2454 "linux" 2485 2455 ], 2486 - "peer": true, 2487 2456 "engines": { 2488 2457 "node": ">=18" 2489 2458 } ··· 2501 2470 "os": [ 2502 2471 "linux" 2503 2472 ], 2504 - "peer": true, 2505 2473 "engines": { 2506 2474 "node": ">=18" 2507 2475 } ··· 2519 2487 "os": [ 2520 2488 "linux" 2521 2489 ], 2522 - "peer": true, 2523 2490 "engines": { 2524 2491 "node": ">=18" 2525 2492 } ··· 2537 2504 "os": [ 2538 2505 "linux" 2539 2506 ], 2540 - "peer": true, 2541 2507 "engines": { 2542 2508 "node": ">=18" 2543 2509 } ··· 2555 2521 "os": [ 2556 2522 "linux" 2557 2523 ], 2558 - "peer": true, 2559 2524 "engines": { 2560 2525 "node": ">=18" 2561 2526 } ··· 2573 2538 "os": [ 2574 2539 "linux" 2575 2540 ], 2576 - "peer": true, 2577 2541 "engines": { 2578 2542 "node": ">=18" 2579 2543 } ··· 2591 2555 "os": [ 2592 2556 "netbsd" 2593 2557 ], 2594 - "peer": true, 2595 2558 "engines": { 2596 2559 "node": ">=18" 2597 2560 } ··· 2609 2572 "os": [ 2610 2573 "netbsd" 2611 2574 ], 2612 - "peer": true, 2613 2575 "engines": { 2614 2576 "node": ">=18" 2615 2577 } ··· 2627 2589 "os": [ 2628 2590 "openbsd" 2629 2591 ], 2630 - "peer": true, 2631 2592 "engines": { 2632 2593 "node": ">=18" 2633 2594 } ··· 2645 2606 "os": [ 2646 2607 "openbsd" 2647 2608 ], 2648 - "peer": true, 2649 2609 "engines": { 2650 2610 "node": ">=18" 2651 2611 } ··· 2663 2623 "os": [ 2664 2624 "openharmony" 2665 2625 ], 2666 - "peer": true, 2667 2626 "engines": { 2668 2627 "node": ">=18" 2669 2628 } ··· 2681 2640 "os": [ 2682 2641 "sunos" 2683 2642 ], 2684 - "peer": true, 2685 2643 "engines": { 2686 2644 "node": ">=18" 2687 2645 } ··· 2699 2657 "os": [ 2700 2658 "win32" 2701 2659 ], 2702 - "peer": true, 2703 2660 "engines": { 2704 2661 "node": ">=18" 2705 2662 } ··· 2717 2674 "os": [ 2718 2675 "win32" 2719 2676 ], 2720 - "peer": true, 2721 2677 "engines": { 2722 2678 "node": ">=18" 2723 2679 } ··· 2735 2691 "os": [ 2736 2692 "win32" 2737 2693 ], 2738 - "peer": true, 2739 2694 "engines": { 2740 2695 "node": ">=18" 2741 2696 } ··· 4731 4686 "version": "3.1.1", 4732 4687 "resolved": "https://registry.npmjs.org/@mdx-js/loader/-/loader-3.1.1.tgz", 4733 4688 "integrity": "sha512-0TTacJyZ9mDmY+VefuthVshaNIyCGZHJG2fMnGaDttCt8HmjUF7SizlHJpaCDoGnN635nK1wpzfpx/Xx5S4WnQ==", 4689 + "peer": true, 4734 4690 "dependencies": { 4735 4691 "@mdx-js/mdx": "^3.0.0", 4736 4692 "source-map": "^0.7.0" ··· 4788 4744 "version": "3.1.1", 4789 4745 "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-3.1.1.tgz", 4790 4746 "integrity": "sha512-f++rKLQgUVYDAtECQ6fn/is15GkEH9+nZPM3MS0RcxVqoTfawHvDlSCH7JbMhAM6uJ32v3eXLvLmLvjGu7PTQw==", 4747 + "peer": true, 4791 4748 "dependencies": { 4792 4749 "@types/mdx": "^2.0.0" 4793 4750 }, ··· 4919 4876 "resolved": "https://registry.npmjs.org/@next/env/-/env-15.5.14.tgz", 4920 4877 "integrity": "sha512-aXeirLYuASxEgi4X4WhfXsShCFxWDfNn/8ZeC5YXAS2BB4A8FJi1kwwGL6nvMVboE7fZCzmJPNdMvVHc8JpaiA==", 4921 4878 "license": "MIT", 4922 - "optional": true, 4923 - "peer": true 4879 + "optional": true 4924 4880 }, 4925 4881 "node_modules/@next/eslint-plugin-next": { 4926 4882 "version": "16.2.3", ··· 4995 4951 "os": [ 4996 4952 "darwin" 4997 4953 ], 4998 - "peer": true, 4999 4954 "engines": { 5000 4955 "node": ">= 10" 5001 4956 } ··· 5012 4967 "os": [ 5013 4968 "darwin" 5014 4969 ], 5015 - "peer": true, 5016 4970 "engines": { 5017 4971 "node": ">= 10" 5018 4972 } ··· 5029 4983 "os": [ 5030 4984 "linux" 5031 4985 ], 5032 - "peer": true, 5033 4986 "engines": { 5034 4987 "node": ">= 10" 5035 4988 } ··· 5046 4999 "os": [ 5047 5000 "linux" 5048 5001 ], 5049 - "peer": true, 5050 5002 "engines": { 5051 5003 "node": ">= 10" 5052 5004 } ··· 5063 5015 "os": [ 5064 5016 "linux" 5065 5017 ], 5066 - "peer": true, 5067 5018 "engines": { 5068 5019 "node": ">= 10" 5069 5020 } ··· 5080 5031 "os": [ 5081 5032 "linux" 5082 5033 ], 5083 - "peer": true, 5084 5034 "engines": { 5085 5035 "node": ">= 10" 5086 5036 } ··· 5097 5047 "os": [ 5098 5048 "win32" 5099 5049 ], 5100 - "peer": true, 5101 5050 "engines": { 5102 5051 "node": ">= 10" 5103 5052 } ··· 5114 5063 "os": [ 5115 5064 "win32" 5116 5065 ], 5117 - "peer": true, 5118 5066 "engines": { 5119 5067 "node": ">= 10" 5120 5068 } ··· 5192 5140 "version": "1.9.0", 5193 5141 "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", 5194 5142 "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", 5143 + "peer": true, 5195 5144 "engines": { 5196 5145 "node": ">=8.0.0" 5197 5146 } ··· 5211 5160 "version": "2.6.0", 5212 5161 "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-2.6.0.tgz", 5213 5162 "integrity": "sha512-L8UyDwqpTcbkIK5cgwDRDYDoEhQoj8wp8BwsO19w3LB1Z41yEQm2VJyNfAi9DrLP/YTqXqWpKHyZfR9/tFYo1Q==", 5163 + "peer": true, 5214 5164 "engines": { 5215 5165 "node": "^18.19.0 || >=20.6.0" 5216 5166 }, ··· 5222 5172 "version": "2.2.0", 5223 5173 "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.2.0.tgz", 5224 5174 "integrity": "sha512-FuabnnUm8LflnieVxs6eP7Z383hgQU4W1e3KJS6aOG3RxWxcHyBxH8fDMHNgu/gFx/M2jvTOW/4/PHhLz6bjWw==", 5175 + "peer": true, 5225 5176 "dependencies": { 5226 5177 "@opentelemetry/semantic-conventions": "^1.29.0" 5227 5178 }, ··· 5796 5747 "version": "2.2.0", 5797 5748 "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-2.2.0.tgz", 5798 5749 "integrity": "sha512-xWQgL0Bmctsalg6PaXExmzdedSp3gyKV8mQBwK/j9VGdCDu2fmXIb2gAehBKbkXCpJ4HPkgv3QfoJWRT4dHWbw==", 5750 + "peer": true, 5799 5751 "dependencies": { 5800 5752 "@opentelemetry/core": "2.2.0", 5801 5753 "@opentelemetry/resources": "2.2.0", ··· 5827 5779 "version": "1.39.0", 5828 5780 "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.39.0.tgz", 5829 5781 "integrity": "sha512-R5R9tb2AXs2IRLNKLBJDynhkfmx7mX0vi8NkhZb3gUkPWHn6HXk5J8iQ/dql0U3ApfWym4kXXmBDRGO+oeOfjg==", 5782 + "peer": true, 5830 5783 "engines": { 5831 5784 "node": ">=14" 5832 5785 } ··· 6011 5964 "resolved": "https://registry.npmjs.org/@parcel/core/-/core-2.9.3.tgz", 6012 5965 "integrity": "sha512-4KlM1Zr/jpsqWuMXr2zmGsaOUs1zMMFh9vfCNKRZkptf+uk8I3sugHbNdo+F5B+4e2yMuOEb1zgAmvJLeuH6ww==", 6013 5966 "dev": true, 5967 + "peer": true, 6014 5968 "dependencies": { 6015 5969 "@mischnic/json-sourcemap": "^0.1.0", 6016 5970 "@parcel/cache": "2.9.3", ··· 7937 7891 "os": [ 7938 7892 "android" 7939 7893 ], 7940 - "peer": true, 7941 7894 "engines": { 7942 7895 "node": ">= 10.0.0" 7943 7896 }, ··· 7958 7911 "os": [ 7959 7912 "darwin" 7960 7913 ], 7961 - "peer": true, 7962 7914 "engines": { 7963 7915 "node": ">= 10.0.0" 7964 7916 }, ··· 7979 7931 "os": [ 7980 7932 "darwin" 7981 7933 ], 7982 - "peer": true, 7983 7934 "engines": { 7984 7935 "node": ">= 10.0.0" 7985 7936 }, ··· 8000 7951 "os": [ 8001 7952 "freebsd" 8002 7953 ], 8003 - "peer": true, 8004 7954 "engines": { 8005 7955 "node": ">= 10.0.0" 8006 7956 }, ··· 8021 7971 "os": [ 8022 7972 "linux" 8023 7973 ], 8024 - "peer": true, 8025 7974 "engines": { 8026 7975 "node": ">= 10.0.0" 8027 7976 }, ··· 8042 7991 "os": [ 8043 7992 "linux" 8044 7993 ], 8045 - "peer": true, 8046 7994 "engines": { 8047 7995 "node": ">= 10.0.0" 8048 7996 }, ··· 8063 8011 "os": [ 8064 8012 "linux" 8065 8013 ], 8066 - "peer": true, 8067 8014 "engines": { 8068 8015 "node": ">= 10.0.0" 8069 8016 }, ··· 8084 8031 "os": [ 8085 8032 "linux" 8086 8033 ], 8087 - "peer": true, 8088 8034 "engines": { 8089 8035 "node": ">= 10.0.0" 8090 8036 }, ··· 8105 8051 "os": [ 8106 8052 "linux" 8107 8053 ], 8108 - "peer": true, 8109 8054 "engines": { 8110 8055 "node": ">= 10.0.0" 8111 8056 }, ··· 8126 8071 "os": [ 8127 8072 "linux" 8128 8073 ], 8129 - "peer": true, 8130 8074 "engines": { 8131 8075 "node": ">= 10.0.0" 8132 8076 }, ··· 8147 8091 "os": [ 8148 8092 "win32" 8149 8093 ], 8150 - "peer": true, 8151 8094 "engines": { 8152 8095 "node": ">= 10.0.0" 8153 8096 }, ··· 8168 8111 "os": [ 8169 8112 "win32" 8170 8113 ], 8171 - "peer": true, 8172 8114 "engines": { 8173 8115 "node": ">= 10.0.0" 8174 8116 }, ··· 8189 8131 "os": [ 8190 8132 "win32" 8191 8133 ], 8192 - "peer": true, 8193 8134 "engines": { 8194 8135 "node": ">= 10.0.0" 8195 8136 }, ··· 8860 8801 "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", 8861 8802 "dev": true, 8862 8803 "hasInstallScript": true, 8804 + "peer": true, 8863 8805 "bin": { 8864 8806 "esbuild": "bin/esbuild" 8865 8807 }, ··· 9026 8968 "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", 9027 8969 "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", 9028 8970 "dev": true, 8971 + "peer": true, 9029 8972 "bin": { 9030 8973 "tsc": "bin/tsc", 9031 8974 "tsserver": "bin/tsserver" ··· 9785 9728 "integrity": "sha512-PG6q63nQg5c9rIi4/Z5lR5IVF7yU5MqmKaPOe0HSc0O2cX1fPi96sUQu5j7eo4gKCkB2AnNGoWt7y4/Xx3Kcqg==", 9786 9729 "devOptional": true, 9787 9730 "license": "Apache-2.0", 9731 + "peer": true, 9788 9732 "dependencies": { 9789 9733 "playwright": "1.59.1" 9790 9734 }, ··· 11222 11166 "resolved": "https://registry.npmjs.org/@svgr/core/-/core-6.5.1.tgz", 11223 11167 "integrity": "sha512-/xdLSWxK5QkqG524ONSjvg3V/FkNyCv538OIBdQqPNaAta3AsXj/Bd2FbvR87yMbXO2hFSWiAe/Q6IkVPDw+mw==", 11224 11168 "dev": true, 11169 + "peer": true, 11225 11170 "dependencies": { 11226 11171 "@babel/core": "^7.19.6", 11227 11172 "@svgr/babel-preset": "^6.5.1", ··· 11464 11409 "os": [ 11465 11410 "darwin" 11466 11411 ], 11467 - "peer": true, 11468 11412 "engines": { 11469 11413 "node": ">=10" 11470 11414 } ··· 11481 11425 "os": [ 11482 11426 "darwin" 11483 11427 ], 11484 - "peer": true, 11485 11428 "engines": { 11486 11429 "node": ">=10" 11487 11430 } ··· 11498 11441 "os": [ 11499 11442 "linux" 11500 11443 ], 11501 - "peer": true, 11502 11444 "engines": { 11503 11445 "node": ">=10" 11504 11446 } ··· 11515 11457 "os": [ 11516 11458 "linux" 11517 11459 ], 11518 - "peer": true, 11519 11460 "engines": { 11520 11461 "node": ">=10" 11521 11462 } ··· 11532 11473 "os": [ 11533 11474 "linux" 11534 11475 ], 11535 - "peer": true, 11536 11476 "engines": { 11537 11477 "node": ">=10" 11538 11478 } ··· 11549 11489 "os": [ 11550 11490 "linux" 11551 11491 ], 11552 - "peer": true, 11553 11492 "engines": { 11554 11493 "node": ">=10" 11555 11494 } ··· 11566 11505 "os": [ 11567 11506 "linux" 11568 11507 ], 11569 - "peer": true, 11570 11508 "engines": { 11571 11509 "node": ">=10" 11572 11510 } ··· 11583 11521 "os": [ 11584 11522 "win32" 11585 11523 ], 11586 - "peer": true, 11587 11524 "engines": { 11588 11525 "node": ">=10" 11589 11526 } ··· 11600 11537 "os": [ 11601 11538 "win32" 11602 11539 ], 11603 - "peer": true, 11604 11540 "engines": { 11605 11541 "node": ">=10" 11606 11542 } ··· 11617 11553 "os": [ 11618 11554 "win32" 11619 11555 ], 11620 - "peer": true, 11621 11556 "engines": { 11622 11557 "node": ">=10" 11623 11558 } ··· 11705 11640 "integrity": "sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==", 11706 11641 "dev": true, 11707 11642 "license": "MIT", 11643 + "peer": true, 11708 11644 "dependencies": { 11709 11645 "@babel/code-frame": "^7.10.4", 11710 11646 "@babel/runtime": "^7.12.5", ··· 12051 11987 "resolved": "https://registry.npmjs.org/@types/express/-/express-5.0.3.tgz", 12052 11988 "integrity": "sha512-wGA0NX93b19/dZC1J18tKWVIYWyyF2ZjT9vin/NRu0qzzvfVzWjs04iq2rQ3H65vCTQYlRqs3YHfY7zjdV+9Kw==", 12053 11989 "dev": true, 11990 + "peer": true, 12054 11991 "dependencies": { 12055 11992 "@types/body-parser": "*", 12056 11993 "@types/express-serve-static-core": "^5.0.0", ··· 12246 12183 "version": "20.19.23", 12247 12184 "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.23.tgz", 12248 12185 "integrity": "sha512-yIdlVVVHXpmqRhtyovZAcSy0MiPcYWGkoO4CGe/+jpP0hmNuihm4XhHbADpK++MsiLHP5MVlv+bcgdF99kSiFQ==", 12186 + "peer": true, 12249 12187 "dependencies": { 12250 12188 "undici-types": "~6.21.0" 12251 12189 } ··· 12291 12229 "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.14.tgz", 12292 12230 "integrity": "sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==", 12293 12231 "license": "MIT", 12232 + "peer": true, 12294 12233 "dependencies": { 12295 12234 "csstype": "^3.2.2" 12296 12235 } ··· 12301 12240 "integrity": "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==", 12302 12241 "dev": true, 12303 12242 "license": "MIT", 12243 + "peer": true, 12304 12244 "peerDependencies": { 12305 12245 "@types/react": "^19.2.0" 12306 12246 } ··· 12493 12433 "integrity": "sha512-gGkiNMPqerb2cJSVcruigx9eHBlLG14fSdPdqMoOcBfh+vvn4iCq2C8MzUB89PrxOXk0y3GZ1yIWb9aOzL93bw==", 12494 12434 "dev": true, 12495 12435 "license": "MIT", 12436 + "peer": true, 12496 12437 "dependencies": { 12497 12438 "@typescript-eslint/scope-manager": "8.58.1", 12498 12439 "@typescript-eslint/types": "8.58.1", ··· 13050 12991 "integrity": "sha512-iCDGI8c4yg+xmjUg2VsygdAUSIIB4x5Rht/P68OXy1hPELKXHDkzh87lkuTcdYmemRChDkEpB426MmDjzC0ziA==", 13051 12992 "dev": true, 13052 12993 "license": "MIT", 12994 + "peer": true, 13053 12995 "dependencies": { 13054 12996 "@blazediff/core": "1.9.1", 13055 12997 "@vitest/mocker": "4.1.5", ··· 13073 13015 "integrity": "sha512-CWy0lBQJq97nionyJJdnaU4961IXTl43a7UCu5nHy51IoKxAt6PVIJLo+76rVl7KOOgcWHNkG4kbJu/pW7knvA==", 13074 13016 "dev": true, 13075 13017 "license": "MIT", 13018 + "peer": true, 13076 13019 "dependencies": { 13077 13020 "@vitest/browser": "4.1.5", 13078 13021 "@vitest/mocker": "4.1.5", ··· 13151 13094 "integrity": "sha512-38C0/Ddb7HcRG0Z4/DUem8x57d2p9jYgp18mkaYswEOQBGsI1CG4f/hjm0ZCeaJfWhSZ4k7jgs29V1Zom7Ki9A==", 13152 13095 "dev": true, 13153 13096 "license": "MIT", 13097 + "peer": true, 13154 13098 "dependencies": { 13155 13099 "@bcoe/v8-coverage": "^1.0.2", 13156 13100 "@vitest/utils": "4.1.5", ··· 13213 13157 "integrity": "sha512-2D+o7Pr82IEO46YPpoA/YU0neeyr6FTerQb5Ro7BUnBuv6NQtT/kmVnczngiMEBhzgqz2UZYl5gArejsyERDSQ==", 13214 13158 "dev": true, 13215 13159 "license": "MIT", 13160 + "peer": true, 13216 13161 "dependencies": { 13217 13162 "@vitest/utils": "4.1.5", 13218 13163 "pathe": "^2.0.3" ··· 13504 13449 "version": "8.15.0", 13505 13450 "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", 13506 13451 "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", 13452 + "peer": true, 13507 13453 "bin": { 13508 13454 "acorn": "bin/acorn" 13509 13455 }, ··· 13531 13477 "version": "1.7.1", 13532 13478 "resolved": "https://registry.npmjs.org/aframe/-/aframe-1.7.1.tgz", 13533 13479 "integrity": "sha512-dcc7PWI5z8pyJ0s2W0mUd8d83339frgMXhUvWr1yxkdgg6zSExkuQwsSJjiNn7XWKMUUqKYDvV/WzQQRA+OBXA==", 13534 - "peer": true, 13535 13480 "dependencies": { 13536 13481 "buffer": "^6.0.3", 13537 13482 "debug": "^4.3.4", ··· 13579 13524 "name": "super-three", 13580 13525 "version": "0.173.5", 13581 13526 "resolved": "https://registry.npmjs.org/super-three/-/super-three-0.173.5.tgz", 13582 - "integrity": "sha512-ecjojbhUg/5QrixwqF4s6gvtJap9XQz7TcnFUX/J8Yosgb2eE2ZUqsyqr/JczFG//6hwIaZPeAa9M5DNaM1dmQ==", 13583 - "peer": true 13527 + "integrity": "sha512-ecjojbhUg/5QrixwqF4s6gvtJap9XQz7TcnFUX/J8Yosgb2eE2ZUqsyqr/JczFG//6hwIaZPeAa9M5DNaM1dmQ==" 13584 13528 }, 13585 13529 "node_modules/agent-base": { 13586 13530 "version": "7.1.4", ··· 13611 13555 "node_modules/an-array": { 13612 13556 "version": "1.0.0", 13613 13557 "resolved": "https://registry.npmjs.org/an-array/-/an-array-1.0.0.tgz", 13614 - "integrity": "sha512-M175GYI7RmsYu24Ok383yZQa3eveDfNnmhTe3OQ3bm70bEovz2gWenH+ST/n32M8lrwLWk74hcPds5CDRPe2wg==", 13615 - "peer": true 13558 + "integrity": "sha512-M175GYI7RmsYu24Ok383yZQa3eveDfNnmhTe3OQ3bm70bEovz2gWenH+ST/n32M8lrwLWk74hcPds5CDRPe2wg==" 13616 13559 }, 13617 13560 "node_modules/ansi-escapes": { 13618 13561 "version": "4.3.2", ··· 13798 13741 "version": "1.0.1", 13799 13742 "resolved": "https://registry.npmjs.org/array-shuffle/-/array-shuffle-1.0.1.tgz", 13800 13743 "integrity": "sha512-PBqgo1Y2XWSksBzq3GFPEb798ZrW2snAcmr4drbVeF/6MT/5aBlkGJEvu5A/CzXHf4EjbHOj/ZowatjlIiVidA==", 13801 - "peer": true, 13802 13744 "engines": { 13803 13745 "node": ">=0.10.0" 13804 13746 } ··· 13929 13871 "node_modules/as-number": { 13930 13872 "version": "1.0.0", 13931 13873 "resolved": "https://registry.npmjs.org/as-number/-/as-number-1.0.0.tgz", 13932 - "integrity": "sha512-HkI/zLo2AbSRO4fqVkmyf3hms0bJDs3iboHqTrNuwTiCRvdYXM7HFhfhB6Dk51anV2LM/IMB83mtK9mHw4FlAg==", 13933 - "peer": true 13874 + "integrity": "sha512-HkI/zLo2AbSRO4fqVkmyf3hms0bJDs3iboHqTrNuwTiCRvdYXM7HFhfhB6Dk51anV2LM/IMB83mtK9mHw4FlAg==" 13934 13875 }, 13935 13876 "node_modules/asap": { 13936 13877 "version": "2.0.6", ··· 14597 14538 "url": "https://github.com/sponsors/ai" 14598 14539 } 14599 14540 ], 14541 + "peer": true, 14600 14542 "dependencies": { 14601 14543 "baseline-browser-mapping": "^2.8.19", 14602 14544 "caniuse-lite": "^1.0.30001751", ··· 14668 14610 "version": "0.0.1", 14669 14611 "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", 14670 14612 "integrity": "sha512-RgSV6InVQ9ODPdLWJ5UAqBqJBOg370Nz6ZQtRzpt6nUjc8v0St97uJ4PYC6NztqIScrAXafKM3mZPMygSe1ggA==", 14671 - "peer": true, 14672 14613 "engines": { 14673 14614 "node": ">=0.4.0" 14674 14615 } ··· 14978 14919 "version": "2.7.0", 14979 14920 "resolved": "https://registry.npmjs.org/centra/-/centra-2.7.0.tgz", 14980 14921 "integrity": "sha512-PbFMgMSrmgx6uxCdm57RUos9Tc3fclMvhLSATYN39XsDV29B89zZ3KA89jmY0vwSGazyU+uerqwa6t+KaodPcg==", 14981 - "peer": true, 14982 14922 "dependencies": { 14983 14923 "follow-redirects": "^1.15.6" 14984 14924 } ··· 15418 15358 "version": "1.0.3", 15419 15359 "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", 15420 15360 "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", 15421 - "peer": true, 15422 15361 "dependencies": { 15423 15362 "mimic-response": "^1.0.0" 15424 15363 }, ··· 15430 15369 "version": "1.0.1", 15431 15370 "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", 15432 15371 "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", 15433 - "peer": true, 15434 15372 "engines": { 15435 15373 "node": ">=4" 15436 15374 } ··· 16164 16102 "version": "3.0.0", 16165 16103 "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", 16166 16104 "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", 16105 + "peer": true, 16167 16106 "engines": { 16168 16107 "node": ">=12" 16169 16108 } ··· 16324 16263 "node_modules/dayjs": { 16325 16264 "version": "1.11.18", 16326 16265 "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.18.tgz", 16327 - "integrity": "sha512-zFBQ7WFRvVRhKcWoUh+ZA1g2HVgUbsZm9sbddh8EC5iv93sui8DVVz1Npvz+r6meo9VKfa8NyLWBsQK1VvIKPA==" 16266 + "integrity": "sha512-zFBQ7WFRvVRhKcWoUh+ZA1g2HVgUbsZm9sbddh8EC5iv93sui8DVVz1Npvz+r6meo9VKfa8NyLWBsQK1VvIKPA==", 16267 + "peer": true 16328 16268 }, 16329 16269 "node_modules/debug": { 16330 16270 "version": "4.4.3", ··· 16405 16345 "version": "2.0.0", 16406 16346 "resolved": "https://registry.npmjs.org/deep-assign/-/deep-assign-2.0.0.tgz", 16407 16347 "integrity": "sha512-2QhG3Kxulu4XIF3WL5C5x0sc/S17JLgm1SfvDfIRsR/5m7ZGmcejII7fZ2RyWhN0UWIJm0TNM/eKow6LAn3evQ==", 16408 - "peer": true, 16409 16348 "dependencies": { 16410 16349 "is-obj": "^1.0.0" 16411 16350 }, ··· 16819 16758 "node_modules/dom-walk": { 16820 16759 "version": "0.1.2", 16821 16760 "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", 16822 - "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==", 16823 - "peer": true 16761 + "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" 16824 16762 }, 16825 16763 "node_modules/domelementtype": { 16826 16764 "version": "2.3.0", ··· 17530 17468 "version": "2.0.0", 17531 17469 "resolved": "https://registry.npmjs.org/dtype/-/dtype-2.0.0.tgz", 17532 17470 "integrity": "sha512-s2YVcLKdFGS0hpFqJaTwscsyt0E8nNFdmo73Ocd81xNPj4URI4rj6D60A+vFMIw7BXWlb4yRkEwfBqcZzPGiZg==", 17533 - "peer": true, 17534 17471 "engines": { 17535 17472 "node": ">= 0.8.0" 17536 17473 } ··· 17551 17488 "node_modules/duplexer3": { 17552 17489 "version": "0.1.5", 17553 17490 "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz", 17554 - "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==", 17555 - "peer": true 17491 + "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==" 17556 17492 }, 17557 17493 "node_modules/eastasianwidth": { 17558 17494 "version": "0.2.0", ··· 17578 17514 "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", 17579 17515 "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", 17580 17516 "dev": true, 17517 + "peer": true, 17581 17518 "dependencies": { 17582 17519 "jake": "^10.8.5" 17583 17520 }, ··· 17597 17534 "node_modules/embla-carousel": { 17598 17535 "version": "8.6.0", 17599 17536 "resolved": "https://registry.npmjs.org/embla-carousel/-/embla-carousel-8.6.0.tgz", 17600 - "integrity": "sha512-SjWyZBHJPbqxHOzckOfo8lHisEaJWmwd23XppYFYVh10bU66/Pn5tkVkbkCMZVdbUE5eTCI2nD8OyIP4Z+uwkA==" 17537 + "integrity": "sha512-SjWyZBHJPbqxHOzckOfo8lHisEaJWmwd23XppYFYVh10bU66/Pn5tkVkbkCMZVdbUE5eTCI2nD8OyIP4Z+uwkA==", 17538 + "peer": true 17601 17539 }, 17602 17540 "node_modules/embla-carousel-react": { 17603 17541 "version": "8.6.0", 17604 17542 "resolved": "https://registry.npmjs.org/embla-carousel-react/-/embla-carousel-react-8.6.0.tgz", 17605 17543 "integrity": "sha512-0/PjqU7geVmo6F734pmPqpyHqiM99olvyecY7zdweCw+6tKEXnrE90pBiBbMMU8s5tICemzpQ3hi5EpxzGW+JA==", 17544 + "peer": true, 17606 17545 "dependencies": { 17607 17546 "embla-carousel": "8.6.0", 17608 17547 "embla-carousel-reactive-utils": "8.6.0" ··· 17701 17640 "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", 17702 17641 "dev": true, 17703 17642 "optional": true, 17704 - "peer": true, 17705 17643 "dependencies": { 17706 17644 "prr": "~1.0.1" 17707 17645 }, ··· 18008 17946 "integrity": "sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ==", 18009 17947 "dev": true, 18010 17948 "license": "MIT", 17949 + "peer": true, 18011 17950 "dependencies": { 18012 17951 "@eslint-community/eslint-utils": "^4.8.0", 18013 17952 "@eslint-community/regexpp": "^4.12.1", ··· 18107 18046 "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.8.tgz", 18108 18047 "integrity": "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==", 18109 18048 "dev": true, 18049 + "peer": true, 18110 18050 "bin": { 18111 18051 "eslint-config-prettier": "bin/cli.js" 18112 18052 }, ··· 18202 18142 "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz", 18203 18143 "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", 18204 18144 "dev": true, 18145 + "peer": true, 18205 18146 "dependencies": { 18206 18147 "@rtsao/scc": "^1.1.0", 18207 18148 "array-includes": "^3.1.9", ··· 19227 19168 "url": "https://github.com/sponsors/RubenVerborgh" 19228 19169 } 19229 19170 ], 19230 - "peer": true, 19231 19171 "engines": { 19232 19172 "node": ">=4.0" 19233 19173 }, ··· 19617 19557 "version": "4.4.0", 19618 19558 "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", 19619 19559 "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", 19620 - "peer": true, 19621 19560 "dependencies": { 19622 19561 "min-document": "^2.19.0", 19623 19562 "process": "^0.11.10" ··· 19759 19698 "integrity": "sha512-4E71E0rpOaQuJR2A3xDZ+GM1HyWYv1clR58tC8emQNeQe3RH7MAzSbat+V0wG78LQBo6m6bzSG/L4pBuCsgnUQ==", 19760 19699 "dev": true, 19761 19700 "license": "MIT", 19701 + "peer": true, 19762 19702 "dependencies": { 19763 19703 "minimist": "^1.2.5", 19764 19704 "neo-async": "^2.6.2", ··· 20231 20171 "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", 20232 20172 "dev": true, 20233 20173 "optional": true, 20234 - "peer": true, 20235 20174 "bin": { 20236 20175 "image-size": "bin/image-size.js" 20237 20176 }, ··· 20540 20479 "node_modules/is-buffer": { 20541 20480 "version": "1.1.6", 20542 20481 "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", 20543 - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", 20544 - "peer": true 20482 + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" 20545 20483 }, 20546 20484 "node_modules/is-bun-module": { 20547 20485 "version": "2.0.0", ··· 20673 20611 "node_modules/is-function": { 20674 20612 "version": "1.0.2", 20675 20613 "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz", 20676 - "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==", 20677 - "peer": true 20614 + "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==" 20678 20615 }, 20679 20616 "node_modules/is-generator-fn": { 20680 20617 "version": "2.1.0", ··· 20803 20740 "version": "1.0.1", 20804 20741 "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", 20805 20742 "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==", 20806 - "peer": true, 20807 20743 "engines": { 20808 20744 "node": ">=0.10.0" 20809 20745 } ··· 21165 21101 "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", 21166 21102 "dev": true, 21167 21103 "license": "MIT", 21104 + "peer": true, 21168 21105 "dependencies": { 21169 21106 "@jest/core": "^29.7.0", 21170 21107 "@jest/types": "^29.6.3", ··· 21875 21812 "integrity": "sha512-Cvc9WUhxSMEo4McES3P7oK3QaXldCfNWp7pl2NNeiIFlCoLr3kfq9kb1fxftiwk1FLV7CvpvDfonxtzUDeSOPg==", 21876 21813 "dev": true, 21877 21814 "license": "MIT", 21815 + "peer": true, 21878 21816 "dependencies": { 21879 21817 "cssstyle": "^4.2.1", 21880 21818 "data-urls": "^5.0.0", ··· 22108 22046 "version": "1.3.4", 22109 22047 "resolved": "https://registry.npmjs.org/layout-bmfont-text/-/layout-bmfont-text-1.3.4.tgz", 22110 22048 "integrity": "sha512-mceomHZ8W7pSKQhTdLvOe1Im4n37u8xa5Gr0J3KPCHRMO/9o7+goWIOzZcUUd+Xgzy3+22bvoIQ0OaN3LRtgaw==", 22111 - "peer": true, 22112 22049 "dependencies": { 22113 22050 "as-number": "^1.0.0", 22114 22051 "word-wrapper": "^1.0.7", ··· 22195 22132 "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", 22196 22133 "dev": true, 22197 22134 "optional": true, 22198 - "peer": true, 22199 22135 "dependencies": { 22200 22136 "pify": "^4.0.1", 22201 22137 "semver": "^5.6.0" ··· 22210 22146 "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", 22211 22147 "dev": true, 22212 22148 "optional": true, 22213 - "peer": true, 22214 22149 "bin": { 22215 22150 "mime": "cli.js" 22216 22151 }, ··· 22224 22159 "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", 22225 22160 "dev": true, 22226 22161 "optional": true, 22227 - "peer": true, 22228 22162 "bin": { 22229 22163 "semver": "bin/semver" 22230 22164 } ··· 22235 22169 "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 22236 22170 "dev": true, 22237 22171 "optional": true, 22238 - "peer": true, 22239 22172 "engines": { 22240 22173 "node": ">=0.10.0" 22241 22174 } ··· 22596 22529 "version": "1.4.2", 22597 22530 "resolved": "https://registry.npmjs.org/load-bmfont/-/load-bmfont-1.4.2.tgz", 22598 22531 "integrity": "sha512-qElWkmjW9Oq1F9EI5Gt7aD9zcdHb9spJCW1L/dmPf7KzCCEJxq8nhHz5eCgI9aMf7vrG/wyaCqdsI+Iy9ZTlog==", 22599 - "peer": true, 22600 22532 "dependencies": { 22601 22533 "buffer-equal": "0.0.1", 22602 22534 "mime": "^1.3.4", ··· 22612 22544 "version": "1.6.0", 22613 22545 "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", 22614 22546 "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", 22615 - "peer": true, 22616 22547 "bin": { 22617 22548 "mime": "cli.js" 22618 22549 }, ··· 22640 22571 "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz", 22641 22572 "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==", 22642 22573 "dev": true, 22643 - "license": "MIT" 22574 + "license": "MIT", 22575 + "peer": true 22644 22576 }, 22645 22577 "node_modules/lodash-es": { 22646 22578 "version": "4.17.23", ··· 22845 22777 "version": "0.0.1", 22846 22778 "resolved": "https://registry.npmjs.org/map-limit/-/map-limit-0.0.1.tgz", 22847 22779 "integrity": "sha512-pJpcfLPnIF/Sk3taPW21G/RQsEEirGaFpCW3oXRwH9dnFHPHNGjNyvh++rdmC2fNqEaTw2MhYJraoJWAHx8kEg==", 22848 - "peer": true, 22849 22780 "dependencies": { 22850 22781 "once": "~1.3.0" 22851 22782 } ··· 22854 22785 "version": "1.3.3", 22855 22786 "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", 22856 22787 "integrity": "sha512-6vaNInhu+CHxtONf3zw3vq4SP2DOQhjBvIa3rNcG0+P7eKWlYH6Peu7rHizSloRU2EwMz6GraLieis9Ac9+p1w==", 22857 - "peer": true, 22858 22788 "dependencies": { 22859 22789 "wrappy": "1" 22860 22790 } ··· 23747 23677 "version": "2.19.2", 23748 23678 "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.2.tgz", 23749 23679 "integrity": "sha512-8S5I8db/uZN8r9HSLFVWPdJCvYOejMcEC82VIzNUc6Zkklf/d1gg2psfE79/vyhWOj4+J8MtwmoOz3TmvaGu5A==", 23750 - "peer": true, 23751 23680 "dependencies": { 23752 23681 "dom-walk": "^0.1.0" 23753 23682 } ··· 23978 23907 "integrity": "sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==", 23979 23908 "dev": true, 23980 23909 "optional": true, 23981 - "peer": true, 23982 23910 "dependencies": { 23983 23911 "iconv-lite": "^0.6.3", 23984 23912 "sax": "^1.2.4" ··· 24007 23935 "node_modules/new-array": { 24008 23936 "version": "1.0.0", 24009 23937 "resolved": "https://registry.npmjs.org/new-array/-/new-array-1.0.0.tgz", 24010 - "integrity": "sha512-K5AyFYbuHZ4e/ti52y7k18q8UHsS78FlRd85w2Fmsd6AkuLipDihPflKC0p3PN5i8II7+uHxo+CtkLiJDfmS5A==", 24011 - "peer": true 23938 + "integrity": "sha512-K5AyFYbuHZ4e/ti52y7k18q8UHsS78FlRd85w2Fmsd6AkuLipDihPflKC0p3PN5i8II7+uHxo+CtkLiJDfmS5A==" 24012 23939 }, 24013 23940 "node_modules/next": { 24014 23941 "version": "15.5.14", ··· 24016 23943 "integrity": "sha512-M6S+4JyRjmKic2Ssm7jHUPkE6YUJ6lv4507jprsSZLulubz0ihO2E+S4zmQK3JZ2ov81JrugukKU4Tz0ivgqqQ==", 24017 23944 "license": "MIT", 24018 23945 "optional": true, 24019 - "peer": true, 24020 23946 "dependencies": { 24021 23947 "@next/env": "15.5.14", 24022 23948 "@swc/helpers": "0.5.15", ··· 24083 24009 } 24084 24010 ], 24085 24011 "optional": true, 24086 - "peer": true, 24087 24012 "dependencies": { 24088 24013 "nanoid": "^3.3.6", 24089 24014 "picocolors": "^1.0.0", ··· 24130 24055 "version": "3.0.0", 24131 24056 "resolved": "https://registry.npmjs.org/nice-color-palettes/-/nice-color-palettes-3.0.0.tgz", 24132 24057 "integrity": "sha512-lL4AjabAAFi313tjrtmgm/bxCRzp4l3vCshojfV/ij3IPdtnRqv6Chcw+SqJUhbe7g3o3BecaqCJYUNLswGBhQ==", 24133 - "peer": true, 24134 24058 "dependencies": { 24135 24059 "got": "^9.2.2", 24136 24060 "map-limit": "0.0.1", ··· 24145 24069 "version": "0.14.0", 24146 24070 "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", 24147 24071 "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", 24148 - "peer": true, 24149 24072 "engines": { 24150 24073 "node": ">=6" 24151 24074 } ··· 24154 24077 "version": "1.1.2", 24155 24078 "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", 24156 24079 "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", 24157 - "peer": true, 24158 24080 "dependencies": { 24159 24081 "defer-to-connect": "^1.0.1" 24160 24082 }, ··· 24166 24088 "version": "6.1.0", 24167 24089 "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", 24168 24090 "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", 24169 - "peer": true, 24170 24091 "dependencies": { 24171 24092 "clone-response": "^1.0.2", 24172 24093 "get-stream": "^5.1.0", ··· 24184 24105 "version": "5.2.0", 24185 24106 "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", 24186 24107 "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", 24187 - "peer": true, 24188 24108 "dependencies": { 24189 24109 "pump": "^3.0.0" 24190 24110 }, ··· 24199 24119 "version": "2.0.0", 24200 24120 "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", 24201 24121 "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", 24202 - "peer": true, 24203 24122 "engines": { 24204 24123 "node": ">=8" 24205 24124 } ··· 24208 24127 "version": "3.3.0", 24209 24128 "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", 24210 24129 "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", 24211 - "peer": true, 24212 24130 "dependencies": { 24213 24131 "mimic-response": "^1.0.0" 24214 24132 }, ··· 24219 24137 "node_modules/nice-color-palettes/node_modules/defer-to-connect": { 24220 24138 "version": "1.1.3", 24221 24139 "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", 24222 - "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", 24223 - "peer": true 24140 + "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" 24224 24141 }, 24225 24142 "node_modules/nice-color-palettes/node_modules/get-stream": { 24226 24143 "version": "4.1.0", 24227 24144 "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", 24228 24145 "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", 24229 - "peer": true, 24230 24146 "dependencies": { 24231 24147 "pump": "^3.0.0" 24232 24148 }, ··· 24238 24154 "version": "9.6.0", 24239 24155 "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", 24240 24156 "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", 24241 - "peer": true, 24242 24157 "dependencies": { 24243 24158 "@sindresorhus/is": "^0.14.0", 24244 24159 "@szmarczak/http-timer": "^1.1.2", ··· 24259 24174 "node_modules/nice-color-palettes/node_modules/json-buffer": { 24260 24175 "version": "3.0.0", 24261 24176 "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", 24262 - "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==", 24263 - "peer": true 24177 + "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==" 24264 24178 }, 24265 24179 "node_modules/nice-color-palettes/node_modules/keyv": { 24266 24180 "version": "3.1.0", 24267 24181 "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", 24268 24182 "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", 24269 - "peer": true, 24270 24183 "dependencies": { 24271 24184 "json-buffer": "3.0.0" 24272 24185 } ··· 24275 24188 "version": "1.0.1", 24276 24189 "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", 24277 24190 "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", 24278 - "peer": true, 24279 24191 "engines": { 24280 24192 "node": ">=0.10.0" 24281 24193 } ··· 24284 24196 "version": "1.0.1", 24285 24197 "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", 24286 24198 "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", 24287 - "peer": true, 24288 24199 "engines": { 24289 24200 "node": ">=4" 24290 24201 } ··· 24293 24204 "version": "4.5.1", 24294 24205 "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", 24295 24206 "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", 24296 - "peer": true, 24297 24207 "engines": { 24298 24208 "node": ">=8" 24299 24209 } ··· 24302 24212 "version": "1.1.0", 24303 24213 "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", 24304 24214 "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", 24305 - "peer": true, 24306 24215 "engines": { 24307 24216 "node": ">=6" 24308 24217 } ··· 24311 24220 "version": "1.0.2", 24312 24221 "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", 24313 24222 "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==", 24314 - "peer": true, 24315 24223 "dependencies": { 24316 24224 "lowercase-keys": "^1.0.0" 24317 24225 } ··· 24948 24856 "node_modules/parse-bmfont-ascii": { 24949 24857 "version": "1.0.6", 24950 24858 "resolved": "https://registry.npmjs.org/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz", 24951 - "integrity": "sha512-U4RrVsUFCleIOBsIGYOMKjn9PavsGOXxbvYGtMOEfnId0SVNsgehXh1DxUdVPLoxd5mvcEtvmKs2Mmf0Mpa1ZA==", 24952 - "peer": true 24859 + "integrity": "sha512-U4RrVsUFCleIOBsIGYOMKjn9PavsGOXxbvYGtMOEfnId0SVNsgehXh1DxUdVPLoxd5mvcEtvmKs2Mmf0Mpa1ZA==" 24953 24860 }, 24954 24861 "node_modules/parse-bmfont-binary": { 24955 24862 "version": "1.0.6", 24956 24863 "resolved": "https://registry.npmjs.org/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz", 24957 - "integrity": "sha512-GxmsRea0wdGdYthjuUeWTMWPqm2+FAd4GI8vCvhgJsFnoGhTrLhXDDupwTo7rXVAgaLIGoVHDZS9p/5XbSqeWA==", 24958 - "peer": true 24864 + "integrity": "sha512-GxmsRea0wdGdYthjuUeWTMWPqm2+FAd4GI8vCvhgJsFnoGhTrLhXDDupwTo7rXVAgaLIGoVHDZS9p/5XbSqeWA==" 24959 24865 }, 24960 24866 "node_modules/parse-bmfont-xml": { 24961 24867 "version": "1.1.6", 24962 24868 "resolved": "https://registry.npmjs.org/parse-bmfont-xml/-/parse-bmfont-xml-1.1.6.tgz", 24963 24869 "integrity": "sha512-0cEliVMZEhrFDwMh4SxIyVJpqYoOWDJ9P895tFuS+XuNzI5UBmBk5U5O4KuJdTnZpSBI4LFA2+ZiJaiwfSwlMA==", 24964 - "peer": true, 24965 24870 "dependencies": { 24966 24871 "xml-parse-from-string": "^1.0.0", 24967 24872 "xml2js": "^0.5.0" ··· 24993 24898 "node_modules/parse-headers": { 24994 24899 "version": "2.0.6", 24995 24900 "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.6.tgz", 24996 - "integrity": "sha512-Tz11t3uKztEW5FEVZnj1ox8GKblWn+PvHY9TmJV5Mll2uHEwRdR/5Li1OlXoECjLYkApdhWy44ocONwXLiKO5A==", 24997 - "peer": true 24901 + "integrity": "sha512-Tz11t3uKztEW5FEVZnj1ox8GKblWn+PvHY9TmJV5Mll2uHEwRdR/5Li1OlXoECjLYkApdhWy44ocONwXLiKO5A==" 24998 24902 }, 24999 24903 "node_modules/parse-json": { 25000 24904 "version": "5.2.0", ··· 25175 25079 "resolved": "https://registry.npmjs.org/pg/-/pg-8.16.3.tgz", 25176 25080 "integrity": "sha512-enxc1h0jA/aq5oSDMvqyW3q89ra6XIIDZgCX9vkMrnz5DFTw/Ny3Li2lFQ+pt3L6MCgm/5o2o8HW9hiJji+xvw==", 25177 25081 "dev": true, 25082 + "peer": true, 25178 25083 "dependencies": { 25179 25084 "pg-connection-string": "^2.9.1", 25180 25085 "pg-pool": "^3.10.1", ··· 25261 25166 "resolved": "https://registry.npmjs.org/phin/-/phin-3.7.1.tgz", 25262 25167 "integrity": "sha512-GEazpTWwTZaEQ9RhL7Nyz0WwqilbqgLahDM3D0hxWwmVDI52nXEybHqiN6/elwpkJBhcuj+WbBu+QfT0uhPGfQ==", 25263 25168 "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", 25264 - "peer": true, 25265 25169 "dependencies": { 25266 25170 "centra": "^2.7.0" 25267 25171 }, ··· 25293 25197 "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", 25294 25198 "dev": true, 25295 25199 "optional": true, 25296 - "peer": true, 25297 25200 "engines": { 25298 25201 "node": ">=6" 25299 25202 } ··· 25981 25884 "integrity": "sha512-C8oWjPR3F81yljW9o5OxcWzfh6avkVwDD2VYdwIGqTkl+OGFISgypqzfu7dOe4QNLL2aqcWBmI3PMtLIK233lw==", 25982 25885 "devOptional": true, 25983 25886 "license": "Apache-2.0", 25887 + "peer": true, 25984 25888 "dependencies": { 25985 25889 "playwright-core": "1.59.1" 25986 25890 }, ··· 26071 25975 } 26072 25976 ], 26073 25977 "license": "MIT", 25978 + "peer": true, 26074 25979 "dependencies": { 26075 25980 "nanoid": "^3.3.11", 26076 25981 "picocolors": "^1.1.1", ··· 26245 26150 "version": "3.4.7", 26246 26151 "resolved": "https://registry.npmjs.org/postgres/-/postgres-3.4.7.tgz", 26247 26152 "integrity": "sha512-Jtc2612XINuBjIl/QTWsV5UvE8UHuNblcO3vVADSrKsrc6RqGX6lOW1cEo3CM2v0XG4Nat8nI+YM7/f26VxXLw==", 26153 + "peer": true, 26248 26154 "engines": { 26249 26155 "node": ">=12" 26250 26156 }, ··· 26293 26199 "resolved": "https://registry.npmjs.org/posthog-js/-/posthog-js-1.351.4.tgz", 26294 26200 "integrity": "sha512-vLSYHMN31FGs1cTJ/SCW0aCLiV6K6ZW63Q1K3B16iWRBVTwz/kg6sJZi6Z/oFeKOuy9I5K/LbVLDBCaTTlcESA==", 26295 26201 "dev": true, 26202 + "peer": true, 26296 26203 "dependencies": { 26297 26204 "@opentelemetry/api": "^1.9.0", 26298 26205 "@opentelemetry/api-logs": "^0.208.0", ··· 26386 26293 "version": "2.0.0", 26387 26294 "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", 26388 26295 "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==", 26389 - "peer": true, 26390 26296 "engines": { 26391 26297 "node": ">=4" 26392 26298 } ··· 26396 26302 "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.6.2.tgz", 26397 26303 "integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==", 26398 26304 "dev": true, 26305 + "peer": true, 26399 26306 "bin": { 26400 26307 "prettier": "bin/prettier.cjs" 26401 26308 }, ··· 26588 26495 "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", 26589 26496 "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", 26590 26497 "dev": true, 26591 - "optional": true, 26592 - "peer": true 26498 + "optional": true 26593 26499 }, 26594 26500 "node_modules/pstree.remy": { 26595 26501 "version": "1.1.8", ··· 26649 26555 "version": "2.0.1", 26650 26556 "resolved": "https://registry.npmjs.org/quad-indices/-/quad-indices-2.0.1.tgz", 26651 26557 "integrity": "sha512-6jtmCsEbGAh5npThXrBaubbTjPcF0rMbn57XCJVI7LkW8PUT56V+uIrRCCWCn85PSgJC9v8Pm5tnJDwmOBewvA==", 26652 - "peer": true, 26653 26558 "dependencies": { 26654 26559 "an-array": "^1.0.0", 26655 26560 "dtype": "^2.0.0", ··· 26769 26674 "version": "19.1.0", 26770 26675 "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz", 26771 26676 "integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==", 26677 + "peer": true, 26772 26678 "engines": { 26773 26679 "node": ">=0.10.0" 26774 26680 } ··· 26825 26731 "version": "19.1.0", 26826 26732 "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz", 26827 26733 "integrity": "sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==", 26734 + "peer": true, 26828 26735 "dependencies": { 26829 26736 "scheduler": "^0.26.0" 26830 26737 }, ··· 27561 27468 "integrity": "sha512-VmtB2rFU/GroZ4oL8+ZqXgSA38O6GR8KSIvWmEFv63pQ0G6KaBH9s07PO8XTXP4vI+3UJUEypOfjkGfmSBBR0w==", 27562 27469 "dev": true, 27563 27470 "license": "MIT", 27471 + "peer": true, 27564 27472 "dependencies": { 27565 27473 "@types/estree": "1.0.8" 27566 27474 }, ··· 27764 27672 "resolved": "https://registry.npmjs.org/sass/-/sass-1.93.2.tgz", 27765 27673 "integrity": "sha512-t+YPtOQHpGW1QWsh1CHQ5cPIr9lbbGZLZnbihP/D/qZj/yuV68m8qarcV17nvkOX81BCrvzAlq2klCQFZghyTg==", 27766 27674 "devOptional": true, 27675 + "peer": true, 27767 27676 "dependencies": { 27768 27677 "chokidar": "^4.0.0", 27769 27678 "immutable": "^5.0.2", ··· 28353 28262 "integrity": "sha512-vbSz7g/1rGMC1uAULqMZjALkIuLu2QABqfhRYhyr/11kzyesi+vAmwyJLukZP1FfecxGOgMwOh6GS0YsGpHAvQ==", 28354 28263 "dev": true, 28355 28264 "license": "MIT", 28265 + "peer": true, 28356 28266 "dependencies": { 28357 28267 "@storybook/global": "^5.0.0", 28358 28268 "@storybook/icons": "^2.0.1", ··· 29363 29273 "node_modules/super-animejs": { 29364 29274 "version": "3.1.0", 29365 29275 "resolved": "https://registry.npmjs.org/super-animejs/-/super-animejs-3.1.0.tgz", 29366 - "integrity": "sha512-6MFAFJDRuvwkovxQZPruuyHinTa4rgj4hNLOndjcYYhZLckoXtVRY9rJPuq8p6c/tgZJrFYEAYAfJ2/hhNtUCA==", 29367 - "peer": true 29276 + "integrity": "sha512-6MFAFJDRuvwkovxQZPruuyHinTa4rgj4hNLOndjcYYhZLckoXtVRY9rJPuq8p6c/tgZJrFYEAYAfJ2/hhNtUCA==" 29368 29277 }, 29369 29278 "node_modules/superagent": { 29370 29279 "version": "10.2.3", ··· 29428 29337 "resolved": "https://registry.npmjs.org/svelte/-/svelte-4.2.2.tgz", 29429 29338 "integrity": "sha512-My2tytF2e2NnHSpn2M7/3VdXT4JdTglYVUuSuK/mXL2XtulPYbeBfl8Dm1QiaKRn0zoULRnL+EtfZHHP0k4H3A==", 29430 29339 "devOptional": true, 29340 + "peer": true, 29431 29341 "dependencies": { 29432 29342 "@ampproject/remapping": "^2.2.1", 29433 29343 "@jridgewell/sourcemap-codec": "^1.4.15", ··· 29678 29588 "node_modules/three": { 29679 29589 "version": "0.183.2", 29680 29590 "resolved": "https://registry.npmjs.org/three/-/three-0.183.2.tgz", 29681 - "integrity": "sha512-di3BsL2FEQ1PA7Hcvn4fyJOlxRRgFYBpMTcyOgkwJIaDOdJMebEFPA+t98EvjuljDx4hNulAGwF6KIjtwI5jgQ==" 29591 + "integrity": "sha512-di3BsL2FEQ1PA7Hcvn4fyJOlxRRgFYBpMTcyOgkwJIaDOdJMebEFPA+t98EvjuljDx4hNulAGwF6KIjtwI5jgQ==", 29592 + "peer": true 29682 29593 }, 29683 29594 "node_modules/three-bmfont-text": { 29684 29595 "version": "3.0.0", 29685 29596 "resolved": "git+ssh://git@github.com/dmarcos/three-bmfont-text.git#eed4878795be9b3e38cf6aec6b903f56acd1f695", 29686 29597 "integrity": "sha512-JcaccaRCcK/A4c0igPQ9RCw91cil7pLhogDVmrThEvP20B/vbFaaNlmn3frF7pWeo3lATUiNrxVfgxm9qfr9GA==", 29687 - "peer": true, 29688 29598 "dependencies": { 29689 29599 "array-shuffle": "^1.0.1", 29690 29600 "layout-bmfont-text": "^1.2.0", ··· 29848 29758 "version": "1.0.0", 29849 29759 "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", 29850 29760 "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", 29851 - "peer": true, 29852 29761 "engines": { 29853 29762 "node": ">=6" 29854 29763 } ··· 30866 30775 "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", 30867 30776 "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", 30868 30777 "dev": true, 30778 + "peer": true, 30869 30779 "bin": { 30870 30780 "tsc": "bin/tsc", 30871 30781 "tsserver": "bin/tsserver" ··· 31193 31103 "version": "3.0.0", 31194 31104 "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", 31195 31105 "integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==", 31196 - "peer": true, 31197 31106 "dependencies": { 31198 31107 "prepend-http": "^2.0.0" 31199 31108 }, ··· 31348 31257 "integrity": "sha512-rZuUu9j6J5uotLDs+cAA4O5H4K1SfPliUlQwqa6YEwSrWDZzP4rhm00oJR5snMewjxF5V/K3D4kctsUTsIU9Mw==", 31349 31258 "dev": true, 31350 31259 "license": "MIT", 31260 + "peer": true, 31351 31261 "dependencies": { 31352 31262 "lightningcss": "^1.32.0", 31353 31263 "picomatch": "^4.0.4", ··· 31426 31336 "integrity": "sha512-9Xx1v3/ih3m9hN+SbfkUyy0JAs72ap3r7joc87XL6jwF0jGg6mFBvQ1SrwaX+h8BlkX6Hz9shdd1uo6AF+ZGpg==", 31427 31337 "dev": true, 31428 31338 "license": "MIT", 31339 + "peer": true, 31429 31340 "dependencies": { 31430 31341 "@vitest/expect": "4.1.5", 31431 31342 "@vitest/mocker": "4.1.5", ··· 31552 31463 "resolved": "https://registry.npmjs.org/vue/-/vue-3.3.4.tgz", 31553 31464 "integrity": "sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw==", 31554 31465 "devOptional": true, 31466 + "peer": true, 31555 31467 "dependencies": { 31556 31468 "@vue/compiler-dom": "3.3.4", 31557 31469 "@vue/compiler-sfc": "3.3.4", ··· 31796 31708 "node_modules/word-wrapper": { 31797 31709 "version": "1.0.7", 31798 31710 "resolved": "https://registry.npmjs.org/word-wrapper/-/word-wrapper-1.0.7.tgz", 31799 - "integrity": "sha512-VOPBFCm9b6FyYKQYfn9AVn2dQvdR/YOVFV6IBRA1TBMJWKffvhEX1af6FMGrttILs2Q9ikCRhLqkbY2weW6dOQ==", 31800 - "peer": true 31711 + "integrity": "sha512-VOPBFCm9b6FyYKQYfn9AVn2dQvdR/YOVFV6IBRA1TBMJWKffvhEX1af6FMGrttILs2Q9ikCRhLqkbY2weW6dOQ==" 31801 31712 }, 31802 31713 "node_modules/wordwrap": { 31803 31714 "version": "1.0.0", ··· 31984 31895 "version": "2.6.0", 31985 31896 "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz", 31986 31897 "integrity": "sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==", 31987 - "peer": true, 31988 31898 "dependencies": { 31989 31899 "global": "~4.4.0", 31990 31900 "is-function": "^1.0.1", ··· 32004 31914 "node_modules/xml-parse-from-string": { 32005 31915 "version": "1.0.1", 32006 31916 "resolved": "https://registry.npmjs.org/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz", 32007 - "integrity": "sha512-ErcKwJTF54uRzzNMXq2X5sMIy88zJvfN2DmdoQvy7PAFJ+tPRU6ydWuOKNMyfmOjdyBQTFREi60s0Y0SyI0G0g==", 32008 - "peer": true 31917 + "integrity": "sha512-ErcKwJTF54uRzzNMXq2X5sMIy88zJvfN2DmdoQvy7PAFJ+tPRU6ydWuOKNMyfmOjdyBQTFREi60s0Y0SyI0G0g==" 32009 31918 }, 32010 31919 "node_modules/xml2js": { 32011 31920 "version": "0.5.0", 32012 31921 "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz", 32013 31922 "integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==", 32014 - "peer": true, 32015 31923 "dependencies": { 32016 31924 "sax": ">=0.6.0", 32017 31925 "xmlbuilder": "~11.0.0" ··· 32024 31932 "version": "11.0.1", 32025 31933 "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", 32026 31934 "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", 32027 - "peer": true, 32028 31935 "engines": { 32029 31936 "node": ">=4.0" 32030 31937 } ··· 32196 32103 "version": "3.25.76", 32197 32104 "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", 32198 32105 "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", 32106 + "peer": true, 32199 32107 "funding": { 32200 32108 "url": "https://github.com/sponsors/colinhacks" 32201 32109 } ··· 32392 32300 "resolved": "https://registry.npmjs.org/@mantine/core/-/core-9.0.0.tgz", 32393 32301 "integrity": "sha512-GUUXlf+4uDpRu5iZ1PFy1NmgG7ttI+1I6VTw3v/b7N1jwOUhARwL1moGjPMjo3Eie3tHdVOCiVMYAvhlQ1GI5Q==", 32394 32302 "license": "MIT", 32303 + "peer": true, 32395 32304 "dependencies": { 32396 32305 "@floating-ui/react": "^0.27.19", 32397 32306 "clsx": "^2.1.1", ··· 32455 32364 "resolved": "https://registry.npmjs.org/@mantine/hooks/-/hooks-9.0.0.tgz", 32456 32365 "integrity": "sha512-TKcz+k0JH/jtblBfwOw/vXBX2EpJO66psJ5ZVmdDhwc6vbHDsvY6oYN8ynt9TfRn/eHZXsEmLPNj+wuGtWy4BA==", 32457 32366 "license": "MIT", 32367 + "peer": true, 32458 32368 "peerDependencies": { 32459 32369 "react": "^19.2.0" 32460 32370 } ··· 33047 32957 "resolved": "https://registry.npmjs.org/react/-/react-19.2.5.tgz", 33048 32958 "integrity": "sha512-llUJLzz1zTUBrskt2pwZgLq59AemifIftw4aB7JxOqf1HY2FDaGDxgwpAPVzHU1kdWabH7FauP4i1oEeer2WCA==", 33049 32959 "license": "MIT", 32960 + "peer": true, 33050 32961 "engines": { 33051 32962 "node": ">=0.10.0" 33052 32963 } ··· 33056 32967 "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.5.tgz", 33057 32968 "integrity": "sha512-J5bAZz+DXMMwW/wV3xzKke59Af6CHY7G4uYLN1OvBcKEsWOs4pQExj86BBKamxl/Ik5bx9whOrvBlSDfWzgSag==", 33058 32969 "license": "MIT", 32970 + "peer": true, 33059 32971 "dependencies": { 33060 32972 "scheduler": "^0.27.0" 33061 32973 },
+59 -46
src/webapp/features/cards/components/urlCardActions/UrlCardActions.tsx
··· 6 6 type User, 7 7 CollectionAccessType, 8 8 } from '@/api-client'; 9 - import { ActionIcon, Button, CopyButton, Group, Menu } from '@mantine/core'; 9 + import { ActionIcon, Button, Collapse, CopyButton, Group, Menu } from '@mantine/core'; 10 10 import { Fragment, useState } from 'react'; 11 11 import { FiPlus } from 'react-icons/fi'; 12 12 import { BsThreeDots, BsTrash2Fill } from 'react-icons/bs'; ··· 14 14 import RemoveCardFromLibraryModal from '../removeCardFromLibraryModal/RemoveCardFromLibraryModal'; 15 15 import AddCardToModal from '@/features/cards/components/addCardToModal/AddCardToModal'; 16 16 import { MdIosShare, MdOutlineStickyNote2 } from 'react-icons/md'; 17 - import NoteCardModal from '@/features/notes/components/noteCardModal/NoteCardModal'; 17 + import NoteCardInline from '@/features/notes/components/noteCardInline/NoteCardInline'; 18 18 import { useAuth } from '@/hooks/useAuth'; 19 + import { useRouter } from 'next/navigation'; 19 20 import { IoMdCheckmark } from 'react-icons/io'; 20 21 import { notifications } from '@mantine/notifications'; 21 22 import { BiCopy } from 'react-icons/bi'; ··· 65 66 66 67 const canRemoveFromLibrary = isAuthor && props.urlIsInLibrary; 67 68 68 - const [showNoteModal, setShowNoteModal] = useState(false); 69 + const [showNote, setShowNote] = useState(false); 69 70 const [showRemoveFromCollectionModal, setShowRemoveFromCollectionModal] = 70 71 useState(false); 71 72 const [showRemoveFromLibaryModal, setShowRemoveFromLibraryModal] = ··· 74 75 const [showAddConnectionModal, setShowAddConnectionModal] = useState(false); 75 76 76 77 const { trigger } = useWebHaptics(); 77 - 78 - if (!isAuthenticated) { 79 - return null; 80 - } 78 + const router = useRouter(); 81 79 82 80 return ( 83 81 <Fragment> 82 + {props.note && ( 83 + <Collapse expanded={showNote}> 84 + <NoteCardInline 85 + note={props.note} 86 + cardContent={props.cardContent} 87 + cardAuthor={props.cardAuthor} 88 + isOwner={isAuthenticated && isAuthor} 89 + onClose={() => setShowNote(false)} 90 + /> 91 + </Collapse> 92 + )} 84 93 <Group justify="space-between"> 85 94 <Group gap={'xs'}> 86 95 <Button ··· 99 108 } 100 109 onClick={(e) => { 101 110 e.stopPropagation(); 111 + if (!isAuthenticated) { 112 + router.push('/login'); 113 + return; 114 + } 102 115 trigger(); 103 116 setShowAddToModal(true); 104 117 }} ··· 124 137 } 125 138 onClick={(e) => { 126 139 e.stopPropagation(); 140 + if (!isAuthenticated) { 141 + router.push('/login'); 142 + return; 143 + } 127 144 trigger(); 128 145 setShowAddConnectionModal(true); 129 146 }} ··· 142 159 radius={'xl'} 143 160 onClick={(e) => { 144 161 e.stopPropagation(); 145 - setShowNoteModal(true); 162 + setShowNote((prev) => !prev); 146 163 }} 147 164 > 148 165 <MdOutlineStickyNote2 /> ··· 228 245 </Menu> 229 246 </Group> 230 247 231 - <AddCardToModal 232 - isOpen={showAddToModal} 233 - onClose={() => setShowAddToModal(false)} 234 - url={props.cardContent.url} 235 - cardContent={props.cardContent} 236 - cardId={props.id} 237 - note={props.note?.text} 238 - isInYourLibrary={props.urlIsInLibrary} 239 - urlLibraryCount={props.urlLibraryCount} 240 - viaCardId={props.viaCardId} 241 - analyticsContext={props.analyticsContext} 242 - /> 243 - 244 - <AddConnectionModal 245 - isOpen={showAddConnectionModal} 246 - onClose={() => setShowAddConnectionModal(false)} 247 - sourceUrl={props.cardContent.url} 248 - targetUrl={props.semblePageUrl} 249 - /> 248 + {isAuthenticated && ( 249 + <> 250 + <AddCardToModal 251 + isOpen={showAddToModal} 252 + onClose={() => setShowAddToModal(false)} 253 + url={props.cardContent.url} 254 + cardContent={props.cardContent} 255 + cardId={props.id} 256 + note={props.note?.text} 257 + isInYourLibrary={props.urlIsInLibrary} 258 + urlLibraryCount={props.urlLibraryCount} 259 + viaCardId={props.viaCardId} 260 + analyticsContext={props.analyticsContext} 261 + /> 250 262 251 - <NoteCardModal 252 - isOpen={showNoteModal} 253 - onClose={() => setShowNoteModal(false)} 254 - note={props.note} 255 - cardContent={props.cardContent} 256 - cardAuthor={props.cardAuthor} 257 - /> 263 + <AddConnectionModal 264 + isOpen={showAddConnectionModal} 265 + onClose={() => setShowAddConnectionModal(false)} 266 + sourceUrl={props.cardContent.url} 267 + targetUrl={props.semblePageUrl} 268 + /> 258 269 259 - {props.currentCollection && ( 260 - <RemoveCardFromCollectionModal 261 - isOpen={showRemoveFromCollectionModal} 262 - onClose={() => setShowRemoveFromCollectionModal(false)} 263 - cardId={props.id} 264 - collectionId={props.currentCollection.id} 265 - /> 270 + {props.currentCollection && ( 271 + <RemoveCardFromCollectionModal 272 + isOpen={showRemoveFromCollectionModal} 273 + onClose={() => setShowRemoveFromCollectionModal(false)} 274 + cardId={props.id} 275 + collectionId={props.currentCollection.id} 276 + /> 277 + )} 278 + <RemoveCardFromLibraryModal 279 + isOpen={showRemoveFromLibaryModal} 280 + onClose={() => setShowRemoveFromLibraryModal(false)} 281 + cardId={props.id} 282 + /> 283 + </> 266 284 )} 267 - <RemoveCardFromLibraryModal 268 - isOpen={showRemoveFromLibaryModal} 269 - onClose={() => setShowRemoveFromLibraryModal(false)} 270 - cardId={props.id} 271 - /> 272 285 </Fragment> 273 286 ); 274 287 }
+9
src/webapp/features/notes/components/noteCardInline/NoteCardInline.module.css
··· 1 + .root { 2 + @mixin light { 3 + background-color: var(--mantine-color-gray-1); 4 + } 5 + 6 + @mixin dark { 7 + background-color: var(--mantine-color-dark-4); 8 + } 9 + }
+288
src/webapp/features/notes/components/noteCardInline/NoteCardInline.tsx
··· 1 + 'use client'; 2 + 3 + import { 4 + ActionIcon, 5 + Anchor, 6 + Button, 7 + Card, 8 + Flex, 9 + Group, 10 + Input, 11 + Menu, 12 + Stack, 13 + Text, 14 + Textarea, 15 + VisuallyHidden, 16 + } from '@mantine/core'; 17 + import { IoEyeOffOutline } from 'react-icons/io5'; 18 + import { BsThreeDots, BsTrash2Fill } from 'react-icons/bs'; 19 + import { MdOutlineEdit } from 'react-icons/md'; 20 + import { notifications } from '@mantine/notifications'; 21 + import type { UrlCard, User } from '@/api-client'; 22 + import { useState } from 'react'; 23 + import { BsExclamation } from 'react-icons/bs'; 24 + import { LinkAvatar } from '@/components/link/MantineLink'; 25 + import { isBotAccount } from '@/features/platforms/bluesky/lib/utils/account'; 26 + import BotLabel from '@/features/profile/components/botLabel/BotLabel'; 27 + import useUpdateNote from '../../lib/mutations/useUpdateNote'; 28 + import useRemoveCardFromLibrary from '@/features/cards/lib/mutations/useRemoveCardFromLibrary'; 29 + import styles from './NoteCardInline.module.css'; 30 + 31 + interface Props { 32 + note: UrlCard['note']; 33 + cardContent: UrlCard['cardContent']; 34 + cardAuthor?: User; 35 + isOwner: boolean; 36 + onClose: () => void; 37 + } 38 + 39 + export default function NoteCardInline(props: Props) { 40 + const [noteText, setNoteText] = useState(props.note?.text ?? ''); 41 + const [editMode, setEditMode] = useState(false); 42 + const [showDeleteWarning, setShowDeleteWarning] = useState(false); 43 + const MAX_NOTE_LENGTH = 500; 44 + 45 + const removeNote = useRemoveCardFromLibrary(); 46 + const updateNote = useUpdateNote(); 47 + 48 + const handleDeleteNote = () => { 49 + if (!props.isOwner || !props.note) return; 50 + 51 + removeNote.mutate(props.note.id, { 52 + onError: () => { 53 + notifications.show({ 54 + message: 'Could not delete note', 55 + position: 'top-center', 56 + color: 'red', 57 + title: 'Error', 58 + loading: false, 59 + autoClose: false, 60 + withCloseButton: true, 61 + icon: <BsExclamation />, 62 + }); 63 + }, 64 + onSettled: () => { 65 + props.onClose(); 66 + }, 67 + }); 68 + }; 69 + 70 + const handleUpdateNote = () => { 71 + if (!props.note || !noteText) { 72 + props.onClose(); 73 + return; 74 + } 75 + 76 + if (props.note.text === noteText) { 77 + setEditMode(false); 78 + return; 79 + } 80 + 81 + updateNote.mutate( 82 + { cardId: props.note.id, note: noteText }, 83 + { 84 + onError: () => { 85 + notifications.show({ 86 + message: 'Could not update note', 87 + position: 'top-center', 88 + color: 'red', 89 + title: 'Error', 90 + loading: false, 91 + autoClose: false, 92 + withCloseButton: true, 93 + icon: <BsExclamation />, 94 + }); 95 + }, 96 + onSettled: () => { 97 + setEditMode(false); 98 + }, 99 + }, 100 + ); 101 + }; 102 + 103 + if (editMode) { 104 + return ( 105 + <Card 106 + className={styles.root} 107 + radius="md" 108 + p="sm" 109 + onClick={(e) => e.stopPropagation()} 110 + > 111 + <Stack gap={'xs'}> 112 + <Stack gap={0}> 113 + <Flex justify="space-between"> 114 + <Input.Label size="md" htmlFor="note-inline"> 115 + Your note 116 + </Input.Label> 117 + <Text c={'gray'} aria-hidden> 118 + {noteText.length} / {MAX_NOTE_LENGTH} 119 + </Text> 120 + </Flex> 121 + <Textarea 122 + id="note-inline" 123 + placeholder="Add a note about this card" 124 + variant="filled" 125 + size="md" 126 + autosize 127 + minRows={3} 128 + maxRows={8} 129 + maxLength={MAX_NOTE_LENGTH} 130 + value={noteText} 131 + onChange={(e) => setNoteText(e.currentTarget.value)} 132 + /> 133 + <VisuallyHidden id="note-inline-char-remaining" aria-live="polite"> 134 + {`${MAX_NOTE_LENGTH - noteText.length} characters remaining`} 135 + </VisuallyHidden> 136 + </Stack> 137 + <Group gap={'xs'} grow> 138 + <Button 139 + variant="light" 140 + color="gray" 141 + onClick={() => { 142 + setEditMode(false); 143 + setNoteText(props.note?.text ?? ''); 144 + }} 145 + > 146 + Cancel 147 + </Button> 148 + <Button 149 + onClick={handleUpdateNote} 150 + loading={updateNote.isPending} 151 + disabled={noteText.trimEnd() === ''} 152 + > 153 + Save 154 + </Button> 155 + </Group> 156 + </Stack> 157 + </Card> 158 + ); 159 + } 160 + 161 + return ( 162 + <Card 163 + className={styles.root} 164 + radius="md" 165 + p="sm" 166 + onClick={(e) => e.stopPropagation()} 167 + > 168 + <Stack gap={'xs'}> 169 + <Group justify="space-between" wrap="nowrap"> 170 + {props.cardAuthor ? ( 171 + <Group gap={'5'}> 172 + <LinkAvatar 173 + href={`/profile/${props.cardAuthor.handle}`} 174 + src={props.cardAuthor.avatarUrl?.replace( 175 + 'avatar', 176 + 'avatar_thumbnail', 177 + )} 178 + alt={`${props.cardAuthor.handle}'s avatar`} 179 + size={'xs'} 180 + radius={'sm'} 181 + /> 182 + <Anchor 183 + href={`/profile/${props.cardAuthor.handle}`} 184 + fz={'xs'} 185 + fw={600} 186 + c={'bright'} 187 + underline="never" 188 + onClick={(e) => e.stopPropagation()} 189 + > 190 + {props.cardAuthor.name || `@${props.cardAuthor.handle}`} 191 + </Anchor> 192 + {isBotAccount(props.cardAuthor) && <BotLabel />} 193 + </Group> 194 + ) : ( 195 + <span /> 196 + )} 197 + <Group gap={'xs'}> 198 + {props.isOwner && ( 199 + <Menu shadow="sm" position="bottom-end"> 200 + <Menu.Target> 201 + <ActionIcon 202 + variant="light" 203 + color="gray" 204 + size="md" 205 + radius="xl" 206 + onClick={(e) => e.stopPropagation()} 207 + > 208 + <BsThreeDots size={18} /> 209 + </ActionIcon> 210 + </Menu.Target> 211 + <Menu.Dropdown onClick={(e) => e.stopPropagation()}> 212 + <Menu.Item 213 + leftSection={<MdOutlineEdit size={14} />} 214 + onClick={() => setEditMode(true)} 215 + > 216 + Edit note 217 + </Menu.Item> 218 + <Menu.Item 219 + color="red" 220 + leftSection={<BsTrash2Fill size={14} />} 221 + onClick={() => setShowDeleteWarning(true)} 222 + > 223 + Delete note 224 + </Menu.Item> 225 + </Menu.Dropdown> 226 + </Menu> 227 + )} 228 + <ActionIcon 229 + variant="light" 230 + color="gray" 231 + size="md" 232 + radius="xl" 233 + onClick={(e) => { 234 + e.stopPropagation(); 235 + props.onClose(); 236 + }} 237 + > 238 + <IoEyeOffOutline size={18} /> 239 + </ActionIcon> 240 + </Group> 241 + </Group> 242 + 243 + {props.note && ( 244 + <Text 245 + fw={500} 246 + fz={'sm'} 247 + fs={'italic'} 248 + c={'gray'} 249 + style={{ cursor: 'pointer' }} 250 + onClick={(e) => { 251 + e.stopPropagation(); 252 + props.onClose(); 253 + }} 254 + > 255 + {props.note.text} 256 + </Text> 257 + )} 258 + 259 + {showDeleteWarning && ( 260 + <Group justify="space-between" gap={'xs'}> 261 + <Text fz="sm">Delete note?</Text> 262 + <Group gap={'xs'}> 263 + <Button 264 + color="red" 265 + size="xs" 266 + onClick={handleDeleteNote} 267 + loading={removeNote.isPending} 268 + > 269 + Delete 270 + </Button> 271 + <Button 272 + variant="light" 273 + color="gray" 274 + size="xs" 275 + onClick={(e) => { 276 + e.stopPropagation(); 277 + setShowDeleteWarning(false); 278 + }} 279 + > 280 + Cancel 281 + </Button> 282 + </Group> 283 + </Group> 284 + )} 285 + </Stack> 286 + </Card> 287 + ); 288 + }