diff --git a/package.json b/package.json index 32d08d925..da9d1f820 100644 --- a/package.json +++ b/package.json @@ -23,12 +23,16 @@ "@docusaurus/core": "^3.7.0", "@docusaurus/preset-classic": "^3.7.0", "@mdx-js/react": "^3.1.0", + "@radix-ui/react-dialog": "^1.1.6", + "@radix-ui/react-tooltip": "^1.1.8", "clsx": "^2.1.1", "docusaurus-lunr-search": "^3.6.0", + "lucide-react": "^0.487.0", "lunr": "^2.3.9", "prism-react-renderer": "^2.4.1", "react": "^19.0.0", - "react-dom": "^19.0.0" + "react-dom": "^19.0.0", + "react-use": "^17.6.0" }, "devDependencies": { "@docusaurus/eslint-plugin": "^3.7.0", @@ -51,7 +55,9 @@ "prettier": "^3.5.2", "prettier-plugin-jsdoc": "^1.3.2", "stylelint": "^16.14.1", + "stylelint-config-rational-order": "^0.1.2", "stylelint-config-standard": "^37.0.0", + "stylelint-order": "^6.0.4", "typescript": "~5.7.3", "typescript-eslint": "^8.25.0" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 97dd5a4b5..778716419 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -17,12 +17,21 @@ importers: '@mdx-js/react': specifier: ^3.1.0 version: 3.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-dialog': + specifier: ^1.1.6 + version: 1.1.6(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-tooltip': + specifier: ^1.1.8 + version: 1.1.8(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) clsx: specifier: ^2.1.1 version: 2.1.1 docusaurus-lunr-search: specifier: ^3.6.0 version: 3.6.0(@docusaurus/core@3.7.0(@mdx-js/react@3.1.0(@types/react@19.0.10)(react@19.0.0))(acorn@8.14.0)(eslint@9.21.0(jiti@1.21.7))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + lucide-react: + specifier: ^0.487.0 + version: 0.487.0(react@19.0.0) lunr: specifier: ^2.3.9 version: 2.3.9 @@ -35,6 +44,9 @@ importers: react-dom: specifier: ^19.0.0 version: 19.0.0(react@19.0.0) + react-use: + specifier: ^17.6.0 + version: 17.6.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) devDependencies: '@docusaurus/eslint-plugin': specifier: ^3.7.0 @@ -96,9 +108,15 @@ importers: stylelint: specifier: ^16.14.1 version: 16.14.1(typescript@5.7.3) + stylelint-config-rational-order: + specifier: ^0.1.2 + version: 0.1.2 stylelint-config-standard: specifier: ^37.0.0 version: 37.0.0(stylelint@16.14.1(typescript@5.7.3)) + stylelint-order: + specifier: ^6.0.4 + version: 6.0.4(stylelint@16.14.1(typescript@5.7.3)) typescript: specifier: ~5.7.3 version: 5.7.3 @@ -1245,6 +1263,21 @@ packages: resolution: {integrity: sha512-JubJ5B2pJ4k4yGxaNLdbjrnk9d/iDz6/q8wOilpIowd6PJPgaxCuHBnBszq7Ce2TyMrywm5r4PnKm6V3iiZF+g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@floating-ui/core@1.6.9': + resolution: {integrity: sha512-uMXCuQ3BItDUbAMhIXw7UPXRfAlOAvZzdK9BWpE60MCn+Svt3aLn9jsPTi/WNGlRUu2uI0v5S7JiIUsbsvh3fw==} + + '@floating-ui/dom@1.6.13': + resolution: {integrity: sha512-umqzocjDgNRGTuO7Q8CU32dkHkECqI8ZdMZ5Swb6QAM0t5rnlrN3lGo1hdpscRd3WS8T6DKYK4ephgIH9iRh3w==} + + '@floating-ui/react-dom@2.1.2': + resolution: {integrity: sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + + '@floating-ui/utils@0.2.9': + resolution: {integrity: sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==} + '@hapi/hoek@9.3.0': resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} @@ -1315,10 +1348,18 @@ packages: '@types/react': '>=16' react: '>=16' + '@mrmlnc/readdir-enhanced@2.2.1': + resolution: {integrity: sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==} + engines: {node: '>=4'} + '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} + '@nodelib/fs.stat@1.1.3': + resolution: {integrity: sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==} + engines: {node: '>= 6'} + '@nodelib/fs.stat@2.0.5': resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} engines: {node: '>= 8'} @@ -1350,6 +1391,241 @@ packages: '@polka/url@1.0.0-next.28': resolution: {integrity: sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==} + '@radix-ui/primitive@1.1.1': + resolution: {integrity: sha512-SJ31y+Q/zAyShtXJc8x83i9TYdbAfHZ++tUZnvjJJqFjzsdUnKsxPL6IEtBlxKkU7yzer//GQtZSV4GbldL3YA==} + + '@radix-ui/react-arrow@1.1.2': + resolution: {integrity: sha512-G+KcpzXHq24iH0uGG/pF8LyzpFJYGD4RfLjCIBfGdSLXvjLHST31RUiRVrupIBMvIppMgSzQ6l66iAxl03tdlg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-compose-refs@1.1.1': + resolution: {integrity: sha512-Y9VzoRDSJtgFMUCoiZBDVo084VQ5hfpXxVE+NgkdNsjiDBByiImMZKKhxMwCbdHvhlENG6a833CbFkOQvTricw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-context@1.1.1': + resolution: {integrity: sha512-UASk9zi+crv9WteK/NU4PLvOoL3OuE6BWVKNF6hPRBtYBDXQ2u5iu3O59zUlJiTVvkyuycnqrztsHVJwcK9K+Q==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-dialog@1.1.6': + resolution: {integrity: sha512-/IVhJV5AceX620DUJ4uYVMymzsipdKBzo3edo+omeskCKGm9FRHM0ebIdbPnlQVJqyuHbuBltQUOG2mOTq2IYw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-dismissable-layer@1.1.5': + resolution: {integrity: sha512-E4TywXY6UsXNRhFrECa5HAvE5/4BFcGyfTyK36gP+pAW1ed7UTK4vKwdr53gAJYwqbfCWC6ATvJa3J3R/9+Qrg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-focus-guards@1.1.1': + resolution: {integrity: sha512-pSIwfrT1a6sIoDASCSpFwOasEwKTZWDw/iBdtnqKO7v6FeOzYJ7U53cPzYFVR3geGGXgVHaH+CdngrrAzqUGxg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-focus-scope@1.1.2': + resolution: {integrity: sha512-zxwE80FCU7lcXUGWkdt6XpTTCKPitG1XKOwViTxHVKIJhZl9MvIl2dVHeZENCWD9+EdWv05wlaEkRXUykU27RA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-id@1.1.0': + resolution: {integrity: sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-popper@1.2.2': + resolution: {integrity: sha512-Rvqc3nOpwseCyj/rgjlJDYAgyfw7OC1tTkKn2ivhaMGcYt8FSBlahHOZak2i3QwkRXUXgGgzeEe2RuqeEHuHgA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-portal@1.1.4': + resolution: {integrity: sha512-sn2O9k1rPFYVyKd5LAJfo96JlSGVFpa1fS6UuBJfrZadudiw5tAmru+n1x7aMRQ84qDM71Zh1+SzK5QwU0tJfA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-presence@1.1.2': + resolution: {integrity: sha512-18TFr80t5EVgL9x1SwF/YGtfG+l0BS0PRAlCWBDoBEiDQjeKgnNZRVJp/oVBl24sr3Gbfwc/Qpj4OcWTQMsAEg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-primitive@2.0.2': + resolution: {integrity: sha512-Ec/0d38EIuvDF+GZjcMU/Ze6MxntVJYO/fRlCPhCaVUyPY9WTalHJw54tp9sXeJo3tlShWpy41vQRgLRGOuz+w==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-slot@1.1.2': + resolution: {integrity: sha512-YAKxaiGsSQJ38VzKH86/BPRC4rh+b1Jpa+JneA5LRE7skmLPNAyeG8kPJj/oo4STLvlrs8vkf/iYyc3A5stYCQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-tooltip@1.1.8': + resolution: {integrity: sha512-YAA2cu48EkJZdAMHC0dqo9kialOcRStbtiY4nJPaht7Ptrhcvpo+eDChaM6BIs8kL6a8Z5l5poiqLnXcNduOkA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-use-callback-ref@1.1.0': + resolution: {integrity: sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-controllable-state@1.1.0': + resolution: {integrity: sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-escape-keydown@1.1.0': + resolution: {integrity: sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-layout-effect@1.1.0': + resolution: {integrity: sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-rect@1.1.0': + resolution: {integrity: sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-size@1.1.0': + resolution: {integrity: sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-visually-hidden@1.1.2': + resolution: {integrity: sha512-1SzA4ns2M1aRlvxErqhLHsBHoS5eI5UUcI2awAMgGUp4LoaoWOKYmvqDY2s/tltuPkh3Yk77YF/r3IRj+Amx4Q==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/rect@1.1.0': + resolution: {integrity: sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==} + '@rtsao/scc@1.1.0': resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} @@ -1510,6 +1786,9 @@ packages: '@types/gensync@1.0.4': resolution: {integrity: sha512-C3YYeRQWp2fmq9OryX+FoDy8nXS6scQ7dPptD8LnFDAUNcKWJjXQKDNJD3HVm+kOUsXhTOkpi69vI4EuAr95bA==} + '@types/glob@7.2.0': + resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} + '@types/gtag.js@0.0.12': resolution: {integrity: sha512-YQV9bUsemkzG81Ea295/nF/5GijnD2Af7QhEofh7xu+kvCN6RdodgNwwGWXB5GMI3NoyvQo0odNctoH/qLMIpg==} @@ -1543,6 +1822,9 @@ packages: '@types/istanbul-reports@3.0.4': resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} + '@types/js-cookie@2.2.7': + resolution: {integrity: sha512-aLkWa0C0vO5b4Sr798E26QgOkss68Un0bLjs7u9qxzPT5CG+8DuNTffWES58YzJs3hrVAOs1wonycqEBqNJubA==} + '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} @@ -1558,6 +1840,9 @@ packages: '@types/mime@1.3.5': resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} + '@types/minimatch@5.1.2': + resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} + '@types/ms@2.1.0': resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} @@ -1627,6 +1912,13 @@ packages: '@types/unist@3.0.3': resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + '@types/vfile-message@2.0.0': + resolution: {integrity: sha512-GpTIuDpb9u4zIO165fUy9+fXcULdD8HFRNli04GehoMVbeNq7D6OBnqSmg3lxZnC+UvgUhEWKxdKiwYUkGltIw==} + deprecated: This is a stub types definition. vfile-message provides its own type definitions, so you do not need this installed. + + '@types/vfile@3.0.2': + resolution: {integrity: sha512-b3nLFGaGkJ9rzOcuXRfHkZMdjsawuDD0ENL9fzTophtBg8FJHSGbH7daXkEpcwy3v7Xol3pAvsmlYyFhR4pqJw==} + '@types/ws@8.5.14': resolution: {integrity: sha512-bd/YFLW+URhBzMXurx7lWByOu+xzU9+kb3RboOteXYDfW+tr+JZa99OyNmPINEGB/ahzKrEuc8rcv4gnpJmxTw==} @@ -1758,6 +2050,9 @@ packages: '@webassemblyjs/wast-printer@1.14.1': resolution: {integrity: sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==} + '@xobotyi/scrollbar-width@1.9.5': + resolution: {integrity: sha512-N8tkAACJx2ww8vFMneJmaAgmjAG1tnVBZJRLRcx061tmsLRZHSEZSLuGWnwPtunsSLvSqXQ2wfp7Mgqg1I+2dQ==} + '@xtuc/ieee754@1.2.0': resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} @@ -1842,6 +2137,10 @@ packages: engines: {'0': node >= 0.8.0} hasBin: true + ansi-regex@4.1.1: + resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==} + engines: {node: '>=6'} + ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} @@ -1850,6 +2149,10 @@ packages: resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} engines: {node: '>=12'} + ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} @@ -1874,14 +2177,34 @@ packages: argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + aria-hidden@1.2.4: + resolution: {integrity: sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==} + engines: {node: '>=10'} + aria-query@5.3.2: resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} engines: {node: '>= 0.4'} + arr-diff@4.0.0: + resolution: {integrity: sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==} + engines: {node: '>=0.10.0'} + + arr-flatten@1.1.0: + resolution: {integrity: sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==} + engines: {node: '>=0.10.0'} + + arr-union@3.1.0: + resolution: {integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==} + engines: {node: '>=0.10.0'} + array-buffer-byte-length@1.0.2: resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} engines: {node: '>= 0.4'} + array-find-index@1.0.2: + resolution: {integrity: sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==} + engines: {node: '>=0.10.0'} + array-flatten@1.1.1: resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} @@ -1889,10 +2212,22 @@ packages: resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} engines: {node: '>= 0.4'} + array-union@1.0.2: + resolution: {integrity: sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==} + engines: {node: '>=0.10.0'} + array-union@2.1.0: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} + array-uniq@1.0.3: + resolution: {integrity: sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==} + engines: {node: '>=0.10.0'} + + array-unique@0.3.2: + resolution: {integrity: sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==} + engines: {node: '>=0.10.0'} + array.prototype.findlast@1.2.5: resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} engines: {node: '>= 0.4'} @@ -1917,9 +2252,21 @@ packages: resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} engines: {node: '>= 0.4'} + arrify@1.0.1: + resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} + engines: {node: '>=0.10.0'} + + assign-symbols@1.0.0: + resolution: {integrity: sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==} + engines: {node: '>=0.10.0'} + ast-types-flow@0.0.8: resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} + astral-regex@1.0.0: + resolution: {integrity: sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==} + engines: {node: '>=4'} + astral-regex@2.0.0: resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} engines: {node: '>=8'} @@ -1936,6 +2283,11 @@ packages: resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} engines: {node: '>= 4.0.0'} + atob@2.1.2: + resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==} + engines: {node: '>= 4.5.0'} + hasBin: true + autocomplete.js@0.37.1: resolution: {integrity: sha512-PgSe9fHYhZEsm/9jggbjtVsGXJkPLvd+9mC7gZJ662vVL5CRWEtm/mIrrzCx0MrNxHVwxD5d00UOn6NsmL2LUQ==} @@ -1946,6 +2298,10 @@ packages: peerDependencies: postcss: ^8.1.0 + autoprefixer@9.8.8: + resolution: {integrity: sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==} + hasBin: true + available-typed-arrays@1.0.7: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} @@ -2003,6 +2359,10 @@ packages: base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + base@0.11.2: + resolution: {integrity: sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==} + engines: {node: '>=0.10.0'} + batch@0.6.1: resolution: {integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==} @@ -2043,6 +2403,10 @@ packages: brace-expansion@2.0.1: resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + braces@2.3.2: + resolution: {integrity: sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==} + engines: {node: '>=0.10.0'} + braces@3.0.3: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} @@ -2070,6 +2434,10 @@ packages: resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} engines: {node: '>= 0.8'} + cache-base@1.0.1: + resolution: {integrity: sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==} + engines: {node: '>=0.10.0'} + cacheable-lookup@7.0.0: resolution: {integrity: sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==} engines: {node: '>=14.16'} @@ -2093,6 +2461,21 @@ packages: resolution: {integrity: sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==} engines: {node: '>= 0.4'} + call-me-maybe@1.0.2: + resolution: {integrity: sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==} + + caller-callsite@2.0.0: + resolution: {integrity: sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==} + engines: {node: '>=4'} + + caller-path@2.0.0: + resolution: {integrity: sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==} + engines: {node: '>=4'} + + callsites@2.0.0: + resolution: {integrity: sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==} + engines: {node: '>=4'} + callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} @@ -2100,6 +2483,14 @@ packages: camel-case@4.1.2: resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} + camelcase-keys@4.2.0: + resolution: {integrity: sha512-Ej37YKYbFUI8QiYlvj9YHb6/Z60dZyPJW0Cs8sFilMbd2lP0bw3ylAq9yJkK4lcTA2dID5fG8LjmJYbO7kWb7Q==} + engines: {node: '>=4'} + + camelcase@4.1.0: + resolution: {integrity: sha512-FxAv7HpHrXbh3aPo4o2qxHay2lkLY3x5Mw3KeE4KQE8ysVfziWeRZDwcjauvwBSGEC/nXUPzZy8zeh4HokqOnw==} + engines: {node: '>=4'} + camelcase@6.3.0: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} @@ -2114,9 +2505,16 @@ packages: caniuse-lite@1.0.30001699: resolution: {integrity: sha512-b+uH5BakXZ9Do9iK+CkDmctUSEqZl+SP056vc5usa0PL+ev5OHw003rZXcnjNDv3L8P5j6rwT6C0BPKSikW08w==} + ccount@1.1.0: + resolution: {integrity: sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==} + ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} @@ -2129,15 +2527,27 @@ packages: resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} engines: {node: '>=10'} + character-entities-html4@1.1.4: + resolution: {integrity: sha512-HRcDxZuZqMx3/a+qrzxdBKBPUpxWEq9xw2OPZ3a/174ihfrQKVsFhqtthBInFy1zZ9GgZyFXOatNujm8M+El3g==} + character-entities-html4@2.1.0: resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} + character-entities-legacy@1.1.4: + resolution: {integrity: sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==} + character-entities-legacy@3.0.0: resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} + character-entities@1.2.4: + resolution: {integrity: sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==} + character-entities@2.0.2: resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} + character-reference-invalid@1.1.4: + resolution: {integrity: sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==} + character-reference-invalid@2.0.1: resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} @@ -2164,6 +2574,10 @@ packages: resolution: {integrity: sha512-HutrvTNsF48wnxkzERIXOe5/mlcfFcbfCmwcg6CJnizbSue78AbDt+1cgl26zwn61WFxhcPykPfZrbqjGmBb4A==} engines: {node: '>=8'} + class-utils@0.3.6: + resolution: {integrity: sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==} + engines: {node: '>=0.10.0'} + clean-css@5.3.3: resolution: {integrity: sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==} engines: {node: '>= 10.0'} @@ -2196,17 +2610,34 @@ packages: resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} engines: {node: '>=6'} + clone-regexp@1.0.1: + resolution: {integrity: sha512-Fcij9IwRW27XedRIJnSOEupS7RVcXtObJXbcUOX93UCLqqOdRpkvzKywOOSizmEK/Is3S/RHX9dLdfo6R1Q1mw==} + engines: {node: '>=0.10.0'} + clsx@2.1.1: resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} engines: {node: '>=6'} + collapse-white-space@1.0.6: + resolution: {integrity: sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ==} + collapse-white-space@2.1.0: resolution: {integrity: sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==} + collection-visit@1.0.0: + resolution: {integrity: sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==} + engines: {node: '>=0.10.0'} + + color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} + color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} @@ -2260,6 +2691,9 @@ packages: common-path-prefix@3.0.0: resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} + component-emitter@1.3.1: + resolution: {integrity: sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==} + compressible@2.0.18: resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} engines: {node: '>= 0.6'} @@ -2311,10 +2745,17 @@ packages: resolution: {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==} engines: {node: '>= 0.6'} + copy-descriptor@0.1.1: + resolution: {integrity: sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==} + engines: {node: '>=0.10.0'} + copy-text-to-clipboard@3.2.0: resolution: {integrity: sha512-RnJFp1XR/LOBDckxTib5Qjr/PMfkatD0MUCQgdpqS8MdKiNUzBjAQBEN6oUy+jW7LI93BBG3DtMB2KOOKpGs2Q==} engines: {node: '>=12'} + copy-to-clipboard@3.3.3: + resolution: {integrity: sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==} + copy-webpack-plugin@11.0.0: resolution: {integrity: sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==} engines: {node: '>= 14.15.0'} @@ -2333,6 +2774,10 @@ packages: core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + cosmiconfig@5.2.1: + resolution: {integrity: sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==} + engines: {node: '>=4'} + cosmiconfig@6.0.0: resolution: {integrity: sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==} engines: {node: '>=8'} @@ -2385,6 +2830,9 @@ packages: peerDependencies: postcss: ^8.4 + css-in-js-utils@3.1.0: + resolution: {integrity: sha512-fJAcud6B3rRu+KHYk+Bwf+WFL2MDCJJ1XG9x137tJQ0xYxor7XziQtuGFbWNdqrvF4Tk26O3H73nfVqXt/fW1A==} + css-loader@6.11.0: resolution: {integrity: sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==} engines: {node: '>= 12.13.0'} @@ -2437,6 +2885,10 @@ packages: css-selector-parser@1.4.1: resolution: {integrity: sha512-HYPSb7y/Z7BNDCOrakL4raGO2zltZkbeXyAd6Tg9obzix6QhzxCotdBl6VT0Dv4vZfJGVz3WL/xaEI9Ly3ul0g==} + css-tree@1.1.3: + resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} + engines: {node: '>=8.0.0'} + css-tree@2.2.1: resolution: {integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==} engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} @@ -2492,6 +2944,10 @@ packages: csstype@3.1.3: resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + currently-unhandled@0.4.1: + resolution: {integrity: sha512-/fITjgjGU50vjQ4FH6eUoYu+iUoUKIXws2hL15JJpIR+BbTxaXQsMuuyjtNh2WqsSBS5nsaZHFsFecyw5CCAng==} + engines: {node: '>=0.10.0'} + damerau-levenshtein@1.0.8: resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} @@ -2535,9 +2991,21 @@ packages: supports-color: optional: true + decamelize-keys@1.1.1: + resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} + engines: {node: '>=0.10.0'} + + decamelize@1.2.0: + resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} + engines: {node: '>=0.10.0'} + decode-named-character-reference@1.0.2: resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} + decode-uri-component@0.2.2: + resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} + engines: {node: '>=0.10'} + decompress-response@6.0.0: resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} engines: {node: '>=10'} @@ -2573,6 +3041,18 @@ packages: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} + define-property@0.2.5: + resolution: {integrity: sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==} + engines: {node: '>=0.10.0'} + + define-property@1.0.0: + resolution: {integrity: sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==} + engines: {node: '>=0.10.0'} + + define-property@2.0.2: + resolution: {integrity: sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==} + engines: {node: '>=0.10.0'} + del@6.1.1: resolution: {integrity: sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==} engines: {node: '>=10'} @@ -2593,6 +3073,9 @@ packages: resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + detect-node-es@1.1.0: + resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} + detect-node@2.1.0: resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} @@ -2609,6 +3092,10 @@ packages: devlop@1.1.0: resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + dir-glob@2.2.2: + resolution: {integrity: sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==} + engines: {node: '>=4'} + dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} @@ -2636,15 +3123,24 @@ packages: dom-converter@0.2.0: resolution: {integrity: sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==} + dom-serializer@0.2.2: + resolution: {integrity: sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==} + dom-serializer@1.4.1: resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} dom-serializer@2.0.0: resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + domelementtype@1.3.1: + resolution: {integrity: sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==} + domelementtype@2.3.0: resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + domhandler@2.4.2: + resolution: {integrity: sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==} + domhandler@4.3.1: resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} engines: {node: '>= 4'} @@ -2653,6 +3149,9 @@ packages: resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} engines: {node: '>= 4'} + domutils@1.7.0: + resolution: {integrity: sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==} + domutils@2.8.0: resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} @@ -2662,6 +3161,10 @@ packages: dot-case@3.0.4: resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} + dot-prop@5.3.0: + resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} + engines: {node: '>=8'} + dot-prop@6.0.1: resolution: {integrity: sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==} engines: {node: '>=10'} @@ -2685,6 +3188,9 @@ packages: emoji-regex@10.4.0: resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==} + emoji-regex@7.0.3: + resolution: {integrity: sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==} + emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -2713,6 +3219,9 @@ packages: resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==} engines: {node: '>=10.13.0'} + entities@1.1.2: + resolution: {integrity: sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==} + entities@2.2.0: resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} @@ -2731,6 +3240,9 @@ packages: error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + error-stack-parser@2.1.4: + resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} + es-abstract@1.23.9: resolution: {integrity: sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==} engines: {node: '>= 0.4'} @@ -2994,6 +3506,14 @@ packages: resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} engines: {node: '>=16.17'} + execall@1.0.0: + resolution: {integrity: sha512-/J0Q8CvOvlAdpvhfkD/WnTQ4H1eU0exze2nFGPj/RSC7jpQ0NkKe2r28T5eMkhEEs+fzepMZNy1kVRKNlC04nQ==} + engines: {node: '>=0.10.0'} + + expand-brackets@2.1.4: + resolution: {integrity: sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==} + engines: {node: '>=0.10.0'} + express@4.21.2: resolution: {integrity: sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==} engines: {node: '>= 0.10.0'} @@ -3002,15 +3522,27 @@ packages: resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} engines: {node: '>=0.10.0'} + extend-shallow@3.0.2: + resolution: {integrity: sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==} + engines: {node: '>=0.10.0'} + extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + extglob@2.0.4: + resolution: {integrity: sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==} + engines: {node: '>=0.10.0'} + fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} fast-diff@1.3.0: resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} + fast-glob@2.2.7: + resolution: {integrity: sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==} + engines: {node: '>=4.0.0'} + fast-glob@3.3.3: resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} engines: {node: '>=8.6.0'} @@ -3021,6 +3553,9 @@ packages: fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + fast-shallow-equal@1.0.0: + resolution: {integrity: sha512-HPtaa38cPgWvaCFmRNhlc6NG7pv6NUHqjPgVAkWGoB9mQMwYB27/K0CvOM5Czy+qpT3e8XJ6Q4aPAnzpNpzNaw==} + fast-uri@3.0.6: resolution: {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==} @@ -3028,6 +3563,9 @@ packages: resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} engines: {node: '>= 4.9.1'} + fastest-stable-stringify@2.0.2: + resolution: {integrity: sha512-bijHueCGd0LqqNK9b5oCMHc0MluJAx0cwqASgbWMvkO01lCYgIhacVRLcaDz3QnyYIRNJRDwMb41VuT6pHJ91Q==} + fastq@1.19.0: resolution: {integrity: sha512-7SFSRCNjBQIZH/xZR3iy5iQYR8aGBE0h3VG6/cwlbrpdciNYBMotQav8c1XI3HjHH+NikUpP53nPdlZSdWmFzA==} @@ -3057,6 +3595,10 @@ packages: file-entry-cache@10.0.6: resolution: {integrity: sha512-0wvv16mVo9nN0Md3k7DMjgAPKG/TY4F/gYMBVb/wMThFRJvzrpaqBFqF6km9wf8QfYTN+mNg5aeaBLfy8k35uA==} + file-entry-cache@4.0.0: + resolution: {integrity: sha512-AVSwsnbV8vH/UVbvgEhf3saVQXORNv0ZzSkvkhQIaia5Tia+JhGTaa/ePUSVoPHQyGayQNmYfkzFi3WZV5zcpA==} + engines: {node: '>=4'} + file-entry-cache@8.0.0: resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} engines: {node: '>=16.0.0'} @@ -3071,6 +3613,10 @@ packages: resolution: {integrity: sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ==} engines: {node: '>= 0.4.0'} + fill-range@4.0.0: + resolution: {integrity: sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==} + engines: {node: '>=0.10.0'} + fill-range@7.1.1: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} @@ -3087,6 +3633,10 @@ packages: resolution: {integrity: sha512-q7Us7kcjj2VMePAa02hDAF6d+MzsdsAWEwYyOpwUtlerRBkOEPBCRZrAV4XfcSN8fHAgaD0hP7miwoay6DCprw==} engines: {node: '>=18'} + find-up@2.1.0: + resolution: {integrity: sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==} + engines: {node: '>=4'} + find-up@3.0.0: resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} engines: {node: '>=6'} @@ -3099,6 +3649,10 @@ packages: resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + flat-cache@2.0.1: + resolution: {integrity: sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==} + engines: {node: '>=4'} + flat-cache@4.0.1: resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} engines: {node: '>=16'} @@ -3110,6 +3664,9 @@ packages: resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} hasBin: true + flatted@2.0.2: + resolution: {integrity: sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==} + flatted@3.3.3: resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} @@ -3126,6 +3683,10 @@ packages: resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} engines: {node: '>= 0.4'} + for-in@1.0.2: + resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==} + engines: {node: '>=0.10.0'} + fork-ts-checker-webpack-plugin@6.5.3: resolution: {integrity: sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==} engines: {node: '>=10', yarn: '>=1.0.0'} @@ -3155,6 +3716,10 @@ packages: fraction.js@4.3.7: resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + fragment-cache@0.2.1: + resolution: {integrity: sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==} + engines: {node: '>=0.10.0'} + fresh@0.5.2: resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} engines: {node: '>= 0.6'} @@ -3205,6 +3770,10 @@ packages: resolution: {integrity: sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==} engines: {node: '>= 0.4'} + get-nonce@1.0.1: + resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} + engines: {node: '>=6'} + get-own-enumerable-property-symbols@3.0.2: resolution: {integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==} @@ -3212,6 +3781,10 @@ packages: resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} engines: {node: '>= 0.4'} + get-stdin@6.0.0: + resolution: {integrity: sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==} + engines: {node: '>=4'} + get-stream@6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} @@ -3227,9 +3800,16 @@ packages: get-tsconfig@4.10.0: resolution: {integrity: sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==} + get-value@2.0.6: + resolution: {integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==} + engines: {node: '>=0.10.0'} + github-slugger@1.5.0: resolution: {integrity: sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==} + glob-parent@3.1.0: + resolution: {integrity: sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==} + glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -3238,6 +3818,9 @@ packages: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} + glob-to-regexp@0.3.0: + resolution: {integrity: sha512-Iozmtbqv0noj0uDDqoL0zNq0VBEfK2YFoMAZoxJe4cwphvLR+JskfF30QhXHOR4m3KrE6NLRYw+U9MRXvifyig==} + glob-to-regexp@0.4.1: resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} @@ -3281,9 +3864,18 @@ packages: resolution: {integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + globby@9.2.0: + resolution: {integrity: sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==} + engines: {node: '>=6'} + globjoin@0.1.4: resolution: {integrity: sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==} + gonzales-pe@4.3.0: + resolution: {integrity: sha512-otgSPpUmdWJ43VXyiNgEYE4luzHCL2pz4wQ0OnDluC6Eg4Ko3Vexy/SrSynglw/eR+OhkzmqFCZa/OFa/RgAOQ==} + engines: {node: '>=0.6.0'} + hasBin: true + gopd@1.2.0: resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} engines: {node: '>= 0.4'} @@ -3316,6 +3908,10 @@ packages: resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} engines: {node: '>= 0.4'} + has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} @@ -3338,6 +3934,22 @@ packages: has-unicode@2.0.1: resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} + has-value@0.3.1: + resolution: {integrity: sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==} + engines: {node: '>=0.10.0'} + + has-value@1.0.0: + resolution: {integrity: sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==} + engines: {node: '>=0.10.0'} + + has-values@0.1.4: + resolution: {integrity: sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==} + engines: {node: '>=0.10.0'} + + has-values@1.0.0: + resolution: {integrity: sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==} + engines: {node: '>=0.10.0'} + has-yarn@3.0.0: resolution: {integrity: sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -3414,6 +4026,9 @@ packages: hookified@1.7.1: resolution: {integrity: sha512-OXcdHsXeOiD7OJ5zvWj8Oy/6RCdLwntAX+wUrfemNcMGn6sux4xbEHi2QXwqePYhjQ/yvxxq2MvCRirdlHscBw==} + hosted-git-info@2.8.9: + resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + hosted-git-info@7.0.2: resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==} engines: {node: ^16.14.0 || >=18.0.0} @@ -3437,6 +4052,10 @@ packages: engines: {node: ^14.13.1 || >=16.0.0} hasBin: true + html-tags@2.0.0: + resolution: {integrity: sha512-+Il6N8cCo2wB/Vd3gqy/8TZhTD3QvcVeQLCnZiGkGCH3JP28IgGAY41giccp2W4R3jfyJPAP318FQTa1yU7K7g==} + engines: {node: '>=4'} + html-tags@3.3.1: resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==} engines: {node: '>=8'} @@ -3456,6 +4075,9 @@ packages: webpack: optional: true + htmlparser2@3.10.1: + resolution: {integrity: sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==} + htmlparser2@6.1.0: resolution: {integrity: sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==} @@ -3509,6 +4131,9 @@ packages: engines: {node: '>=18'} hasBin: true + hyphenate-style-name@1.1.0: + resolution: {integrity: sha512-WDC/ui2VVRrz3jOVi+XtjqkDjiVjTtFaAGiW37k6b+ohyQ5wYDOGkvCZa8+H0nx3gyvv0+BST9xuOgIyGQ00gw==} + iconv-lite@0.4.24: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} @@ -3522,6 +4147,10 @@ packages: ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + ignore@4.0.6: + resolution: {integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==} + engines: {node: '>= 4'} + ignore@5.3.2: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} @@ -3541,10 +4170,18 @@ packages: immer@9.0.21: resolution: {integrity: sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==} + import-fresh@2.0.0: + resolution: {integrity: sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==} + engines: {node: '>=4'} + import-fresh@3.3.1: resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} engines: {node: '>=6'} + import-lazy@3.1.0: + resolution: {integrity: sha512-8/gvXvX2JMn0F+CDlSC4l6kOmVaLOO3XLkksI7CI3Ud95KDYJuYur2b9P/PUt/i/pDAMd/DulQsNbbbmRRsDIQ==} + engines: {node: '>=6'} + import-lazy@4.0.0: resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} engines: {node: '>=8'} @@ -3553,6 +4190,10 @@ packages: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} + indent-string@3.2.0: + resolution: {integrity: sha512-BYqTHXTGUIvg7t1r4sJNKcbDZkL92nkXA8YtRpbjFHRHGDL/NtUeiBJMeE60kIFN/Mg8ESaWQvftaYMGJzQZCQ==} + engines: {node: '>=4'} + indent-string@4.0.0: resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} engines: {node: '>=8'} @@ -3565,6 +4206,9 @@ packages: resolution: {integrity: sha512-MWDKS3AS1bGCHLBA2VLImJz42f7bJh8wQsTGCzI3j519/CASStoDONUBVz2I/VID0MpiX3SGSnbOD2xUalbE5g==} engines: {node: '>=18'} + indexes-of@1.0.1: + resolution: {integrity: sha512-bup+4tap3Hympa+JBJUG7XuOsdNQ6fxt0MHyXMKuLBKn0OqsTfvUxkUrroEX1+B2VsSHvCjiIcZVxRtYa4nllA==} + infima@0.2.0-alpha.45: resolution: {integrity: sha512-uyH0zfr1erU1OohLk0fT4Rrb94AOhguWNOcD9uGrSpRvNB+6gZXUoJX5J0NtvzBO10YZ9PgvA4NFgt+fYg8ojw==} engines: {node: '>=12'} @@ -3589,6 +4233,9 @@ packages: inline-style-parser@0.2.4: resolution: {integrity: sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==} + inline-style-prefixer@7.0.1: + resolution: {integrity: sha512-lhYo5qNTQp3EvSSp3sRvXMbVQTLrvGV6DycRMJ5dm2BLMiJ30wpXKdDdgX+GmJZ5uQMucwRKHamXSst3Sj/Giw==} + internal-slot@1.1.0: resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} engines: {node: '>= 0.4'} @@ -3608,9 +4255,23 @@ packages: resolution: {integrity: sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==} engines: {node: '>= 10'} + is-accessor-descriptor@1.0.1: + resolution: {integrity: sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==} + engines: {node: '>= 0.10'} + + is-alphabetical@1.0.4: + resolution: {integrity: sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==} + is-alphabetical@2.0.1: resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} + is-alphanumeric@1.0.0: + resolution: {integrity: sha512-ZmRL7++ZkcMOfDuWZuMJyIVLr2keE1o/DeNWh1EmgqGhUcV+9BIVsx0BcSBOHTZqzjs4+dISzr2KAeBEWGgXeA==} + engines: {node: '>=0.10.0'} + + is-alphanumerical@1.0.4: + resolution: {integrity: sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==} + is-alphanumerical@2.0.1: resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} @@ -3637,6 +4298,9 @@ packages: resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==} engines: {node: '>= 0.4'} + is-buffer@1.1.6: + resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} + is-buffer@2.0.5: resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} engines: {node: '>=4'} @@ -3660,6 +4324,10 @@ packages: resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} engines: {node: '>= 0.4'} + is-data-descriptor@1.0.1: + resolution: {integrity: sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==} + engines: {node: '>= 0.4'} + is-data-view@1.0.2: resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==} engines: {node: '>= 0.4'} @@ -3668,9 +4336,24 @@ packages: resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} engines: {node: '>= 0.4'} + is-decimal@1.0.4: + resolution: {integrity: sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==} + is-decimal@2.0.1: resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} + is-descriptor@0.1.7: + resolution: {integrity: sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==} + engines: {node: '>= 0.4'} + + is-descriptor@1.0.3: + resolution: {integrity: sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==} + engines: {node: '>= 0.4'} + + is-directory@0.3.1: + resolution: {integrity: sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==} + engines: {node: '>=0.10.0'} + is-docker@2.2.1: resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} engines: {node: '>=8'} @@ -3680,6 +4363,10 @@ packages: resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} engines: {node: '>=0.10.0'} + is-extendable@1.0.1: + resolution: {integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==} + engines: {node: '>=0.10.0'} + is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} @@ -3688,6 +4375,10 @@ packages: resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==} engines: {node: '>= 0.4'} + is-fullwidth-code-point@2.0.0: + resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==} + engines: {node: '>=4'} + is-fullwidth-code-point@3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} @@ -3704,10 +4395,17 @@ packages: resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==} engines: {node: '>= 0.4'} + is-glob@3.1.0: + resolution: {integrity: sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==} + engines: {node: '>=0.10.0'} + is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} + is-hexadecimal@1.0.4: + resolution: {integrity: sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==} + is-hexadecimal@2.0.1: resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} @@ -3727,6 +4425,10 @@ packages: resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} engines: {node: '>= 0.4'} + is-number@3.0.0: + resolution: {integrity: sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==} + engines: {node: '>=0.10.0'} + is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} @@ -3747,6 +4449,10 @@ packages: resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} engines: {node: '>=8'} + is-plain-obj@1.1.0: + resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} + engines: {node: '>=0.10.0'} + is-plain-obj@2.1.0: resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} engines: {node: '>=8'} @@ -3799,6 +4505,10 @@ packages: resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} engines: {node: '>= 0.4'} + is-supported-regexp-flag@1.0.1: + resolution: {integrity: sha512-3vcJecUUrpgCqc/ca0aWeNu64UGgxcvO60K/Fkr1N6RSvfGCTU60UKN68JDmKokgba0rFFJs12EnzOQa14ubKQ==} + engines: {node: '>=0.10.0'} + is-symbol@1.1.1: resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==} engines: {node: '>= 0.4'} @@ -3822,6 +4532,16 @@ packages: resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} engines: {node: '>= 0.4'} + is-whitespace-character@1.0.4: + resolution: {integrity: sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w==} + + is-windows@1.0.2: + resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} + engines: {node: '>=0.10.0'} + + is-word-character@1.0.4: + resolution: {integrity: sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA==} + is-wsl@2.2.0: resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} engines: {node: '>=8'} @@ -3842,6 +4562,10 @@ packages: isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + isobject@2.1.0: + resolution: {integrity: sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==} + engines: {node: '>=0.10.0'} + isobject@3.0.1: resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} engines: {node: '>=0.10.0'} @@ -3869,6 +4593,9 @@ packages: joi@17.13.3: resolution: {integrity: sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==} + js-cookie@2.2.1: + resolution: {integrity: sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==} + js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -3893,6 +4620,9 @@ packages: json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + json-parse-better-errors@1.0.2: + resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} + json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} @@ -3927,6 +4657,14 @@ packages: keyv@5.2.3: resolution: {integrity: sha512-AGKecUfzrowabUv0bH1RIR5Vf7w+l4S3xtQAypKaUpTdIR1EbrAcTxHCrpo9Q+IWeUlFE2palRtgIQcgm+PQJw==} + kind-of@3.2.2: + resolution: {integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==} + engines: {node: '>=0.10.0'} + + kind-of@4.0.0: + resolution: {integrity: sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==} + engines: {node: '>=0.10.0'} + kind-of@6.0.3: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} @@ -3935,6 +4673,9 @@ packages: resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} engines: {node: '>=6'} + known-css-properties@0.11.0: + resolution: {integrity: sha512-bEZlJzXo5V/ApNNa5z375mJC6Nrz4vG43UgcSCrg2OHC+yuB6j0iDSrY7RQ/+PRofFB03wNIIt9iXIVLr4wc7w==} + known-css-properties@0.35.0: resolution: {integrity: sha512-a/RAk2BfKk+WFGhhOCAYqSiFLc34k8Mt/6NWRI4joER0EYUzXIcFivjjnoD3+XU1DggLn/tZc3DOAgke7l8a4A==} @@ -3952,6 +4693,10 @@ packages: launch-editor@2.9.1: resolution: {integrity: sha512-Gcnl4Bd+hRO9P9icCP/RVVT2o8SFlPXofuCxvA2SaZuH45whSvf5p8x5oih5ftLiVhEI4sp5xDY+R+b3zJBh5w==} + leven@2.1.0: + resolution: {integrity: sha512-nvVPLpIHUxCUoRLrFqTgSxXJ614d8AgQoWl7zPe/2VadE8+1dpU3LBhowRuBAcuwruWtOdD8oYC9jDNJjXDPyA==} + engines: {node: '>=0.10.0'} + leven@3.1.0: resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} engines: {node: '>=6'} @@ -3976,6 +4721,10 @@ packages: resolution: {integrity: sha512-iyAZCeyD+c1gPyE9qpFu8af0Y+MRtmKOncdGoA2S5EY8iFq99dmmvkNnHiWo+pj0s7yH7l3KPIgee77tKpXPWQ==} engines: {node: '>=18.0.0'} + load-json-file@4.0.0: + resolution: {integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==} + engines: {node: '>=4'} + loader-runner@4.3.0: resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} engines: {node: '>=6.11.5'} @@ -3988,6 +4737,10 @@ packages: resolution: {integrity: sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==} engines: {node: '>= 12.13.0'} + locate-path@2.0.0: + resolution: {integrity: sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==} + engines: {node: '>=4'} + locate-path@3.0.0: resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} engines: {node: '>=6'} @@ -4018,10 +4771,17 @@ packages: lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + log-symbols@2.2.0: + resolution: {integrity: sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==} + engines: {node: '>=4'} + log-update@6.1.0: resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==} engines: {node: '>=18'} + longest-streak@2.0.4: + resolution: {integrity: sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==} + longest-streak@3.1.0: resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} @@ -4029,6 +4789,10 @@ packages: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true + loud-rejection@1.6.0: + resolution: {integrity: sha512-RPNliZOFkqFumDhvYqOaNY4Uz9oJM2K9tC6JWsJJsNdhuONW4LQHRBpb0qf4pJApVffI5N39SwzWZJuEhfd7eQ==} + engines: {node: '>=0.10.0'} + lower-case@2.0.2: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} @@ -4042,19 +4806,46 @@ packages: lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + lucide-react@0.487.0: + resolution: {integrity: sha512-aKqhOQ+YmFnwq8dWgGjOuLc8V1R9/c/yOd+zDY4+ohsR2Jo05lSGc3WsstYPIzcTpeosN7LoCkLReUUITvaIvw==} + peerDependencies: + react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0 + lunr-languages@1.14.0: resolution: {integrity: sha512-hWUAb2KqM3L7J5bcrngszzISY4BxrXn/Xhbb9TTCJYEGqlR1nG67/M14sp09+PTIRklobrn57IAxcdcO/ZFyNA==} lunr@2.3.9: resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==} + map-cache@0.2.2: + resolution: {integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==} + engines: {node: '>=0.10.0'} + + map-obj@1.0.1: + resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} + engines: {node: '>=0.10.0'} + + map-obj@2.0.0: + resolution: {integrity: sha512-TzQSV2DiMYgoF5RycneKVUzIa9bQsj/B3tTgsE3dOGqlzHnGIDaC7XBE7grnA+8kZPnfqSGFe95VHc2oc0VFUQ==} + engines: {node: '>=4'} + + map-visit@1.0.0: + resolution: {integrity: sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==} + engines: {node: '>=0.10.0'} + mark.js@8.11.1: resolution: {integrity: sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==} + markdown-escapes@1.0.4: + resolution: {integrity: sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg==} + markdown-extensions@2.0.0: resolution: {integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==} engines: {node: '>=16'} + markdown-table@1.1.3: + resolution: {integrity: sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q==} + markdown-table@2.0.0: resolution: {integrity: sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A==} @@ -4068,6 +4859,9 @@ packages: mathml-tag-names@2.1.3: resolution: {integrity: sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==} + mdast-util-compact@1.0.4: + resolution: {integrity: sha512-3YDMQHI5vRiS2uygEFYaqckibpJtKq5Sj2c8JioeOQBU6INpKbdWzfyLqFFnDwEcEnRFIdMsguzs5pC1Jp4Isg==} + mdast-util-directive@3.1.0: resolution: {integrity: sha512-I3fNFt+DHmpWCYAT7quoM6lHf9wuqtI+oCOfvILnoicNIqjh5E3dEJWiXuYME2gNe8vl1iMQwyUHa7bgFmak6Q==} @@ -4122,6 +4916,9 @@ packages: mdast-util-to-string@4.0.0: resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} + mdn-data@2.0.14: + resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} + mdn-data@2.0.28: resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==} @@ -4143,6 +4940,10 @@ packages: resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==} engines: {node: '>=18'} + meow@5.0.0: + resolution: {integrity: sha512-CbTqYU17ABaLefO8vCU153ZZlprKYWDljcndKKDCFcYQITzWCXZAVk4QMFZPgvzrnUQ3uItnIE/LoUOwrT15Ig==} + engines: {node: '>=6'} + merge-descriptors@1.0.3: resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} @@ -4280,6 +5081,10 @@ packages: micromark@4.0.1: resolution: {integrity: sha512-eBPdkcoCNvYcxQOAKAlceo5SNdzZWfF+FcSupREAzdAh9rRmE239CEQAiTwIgblwnoM8zzj35sZ5ZwvSEOF6Kw==} + micromatch@3.1.10: + resolution: {integrity: sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==} + engines: {node: '>=0.10.0'} + micromatch@4.0.8: resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} @@ -4349,13 +5154,25 @@ packages: resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} engines: {node: '>=16 || 14 >=14.17'} + minimist-options@3.0.2: + resolution: {integrity: sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==} + engines: {node: '>= 4'} + minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + mixin-deep@1.3.2: + resolution: {integrity: sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==} + engines: {node: '>=0.10.0'} + mkdirp@0.3.0: resolution: {integrity: sha512-OHsdUcVAQ6pOtg5JYWpCBo9W/GySVuwvP9hueRMW7UqshC0tbfzLv8wjySTPm3tfUZ/21CE9E1pJagOA91Pxew==} deprecated: Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.) + mkdirp@0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true + mrmime@2.0.0: resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} engines: {node: '>=10'} @@ -4370,11 +5187,21 @@ packages: resolution: {integrity: sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==} hasBin: true + nano-css@5.6.2: + resolution: {integrity: sha512-+6bHaC8dSDGALM1HJjOHVXpuastdu2xFoZlC77Jh4cg+33Zcgm+Gxd+1xsnpZK14eyHObSp82+ll5y3SX75liw==} + peerDependencies: + react: '*' + react-dom: '*' + nanoid@3.3.8: resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true + nanomatch@1.2.13: + resolution: {integrity: sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==} + engines: {node: '>=0.10.0'} + natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} @@ -4407,6 +5234,9 @@ packages: resolution: {integrity: sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==} hasBin: true + normalize-package-data@2.5.0: + resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} + normalize-package-data@6.0.2: resolution: {integrity: sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==} engines: {node: ^16.14.0 || >=18.0.0} @@ -4419,6 +5249,9 @@ packages: resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} engines: {node: '>=0.10.0'} + normalize-selector@0.2.0: + resolution: {integrity: sha512-dxvWdI8gw6eAvk9BlPffgEoGfM7AdijoCwOEJge3e3ulT2XLgmU7KvvxprOaCu05Q1uGRHmOhHe1r6emZoKyFw==} + normalize-url@8.0.1: resolution: {integrity: sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==} engines: {node: '>=14.16'} @@ -4446,10 +5279,17 @@ packages: peerDependencies: webpack: ^4.0.0 || ^5.0.0 + num2fraction@1.2.2: + resolution: {integrity: sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg==} + object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} + object-copy@0.1.0: + resolution: {integrity: sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==} + engines: {node: '>=0.10.0'} + object-inspect@1.13.4: resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} engines: {node: '>= 0.4'} @@ -4458,6 +5298,10 @@ packages: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} + object-visit@1.0.1: + resolution: {integrity: sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==} + engines: {node: '>=0.10.0'} + object.assign@4.1.7: resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} engines: {node: '>= 0.4'} @@ -4474,6 +5318,10 @@ packages: resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} engines: {node: '>= 0.4'} + object.pick@1.3.0: + resolution: {integrity: sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==} + engines: {node: '>=0.10.0'} + object.values@1.2.1: resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} engines: {node: '>= 0.4'} @@ -4524,6 +5372,10 @@ packages: resolution: {integrity: sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==} engines: {node: '>=12.20'} + p-limit@1.3.0: + resolution: {integrity: sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==} + engines: {node: '>=4'} + p-limit@2.3.0: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} engines: {node: '>=6'} @@ -4536,6 +5388,10 @@ packages: resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + p-locate@2.0.0: + resolution: {integrity: sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==} + engines: {node: '>=4'} + p-locate@3.0.0: resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} engines: {node: '>=6'} @@ -4556,6 +5412,10 @@ packages: resolution: {integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==} engines: {node: '>=8'} + p-try@1.0.0: + resolution: {integrity: sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==} + engines: {node: '>=4'} + p-try@2.2.0: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} @@ -4571,9 +5431,16 @@ packages: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} + parse-entities@1.2.2: + resolution: {integrity: sha512-NzfpbxW/NPrzZ/yYSoQxyqUZMZXIdCfE0OIN4ESsnptHJECoUk3FZktxNuzQf4tjt5UEopnxpYJbvYuxIFDdsg==} + parse-entities@4.0.2: resolution: {integrity: sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==} + parse-json@4.0.0: + resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} + engines: {node: '>=4'} + parse-json@5.2.0: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} @@ -4601,6 +5468,13 @@ packages: pascal-case@3.1.2: resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} + pascalcase@0.1.1: + resolution: {integrity: sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==} + engines: {node: '>=0.10.0'} + + path-dirname@1.0.2: + resolution: {integrity: sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==} + path-exists@3.0.0: resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} engines: {node: '>=4'} @@ -4640,10 +5514,17 @@ packages: path-to-regexp@3.3.0: resolution: {integrity: sha512-qyCH421YQPS2WFDxDjftfc1ZR5WKQzVzqsp4n9M2kQhVOo/ByahFoUNJfl58kOcEGfQ//7weFTDhm+ss8Ecxgw==} + path-type@3.0.0: + resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==} + engines: {node: '>=4'} + path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} + picocolors@0.2.1: + resolution: {integrity: sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==} + picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -4660,6 +5541,14 @@ packages: engines: {node: '>=0.10'} hasBin: true + pify@3.0.0: + resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} + engines: {node: '>=4'} + + pify@4.0.1: + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} + pkg-dir@7.0.0: resolution: {integrity: sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==} engines: {node: '>=14.16'} @@ -4672,6 +5561,10 @@ packages: resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} engines: {node: '>=4'} + posix-character-classes@0.1.1: + resolution: {integrity: sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==} + engines: {node: '>=0.10.0'} + possible-typed-array-names@1.1.0: resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} engines: {node: '>= 0.4'} @@ -4807,18 +5700,34 @@ packages: peerDependencies: postcss: ^8.4 + postcss-html@0.36.0: + resolution: {integrity: sha512-HeiOxGcuwID0AFsNAL0ox3mW6MHH5cstWN1Z3Y+n6H+g12ih7LHdYxWwEA/QmrebctLjo79xz9ouK3MroHwOJw==} + peerDependencies: + postcss: '>=5.0.0' + postcss-syntax: '>=0.36.0' + postcss-image-set-function@7.0.0: resolution: {integrity: sha512-QL7W7QNlZuzOwBTeXEmbVckNt1FSmhQtbMRvGGqqU4Nf4xk6KUEQhAoWuMzwbSv5jxiRiSZ5Tv7eiDB9U87znA==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 + postcss-jsx@0.36.4: + resolution: {integrity: sha512-jwO/7qWUvYuWYnpOb0+4bIIgJt7003pgU3P6nETBLaOyBXuTD55ho21xnals5nBrlpTIFodyd3/jBi6UO3dHvA==} + peerDependencies: + postcss: '>=5.0.0' + postcss-syntax: '>=0.36.0' + postcss-lab-function@7.0.7: resolution: {integrity: sha512-+ONj2bpOQfsCKZE2T9VGMyVVdGcGUpr7u3SVfvkJlvhTRmDCfY25k4Jc8fubB9DclAPR4+w8uVtDZmdRgdAHig==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 + postcss-less@3.1.4: + resolution: {integrity: sha512-7TvleQWNM2QLcHqvudt3VYjULVB49uiW6XzEUFmvwHzvsOEF5MwBrIXZDJQvJNFGjJQTzSzZnDoCJ8h/ljyGXA==} + engines: {node: '>=6.14.4'} + postcss-loader@7.3.4: resolution: {integrity: sha512-iW5WTTBSC5BfsBJ9daFMPVrLT36MrNiC6fqOZTTaHjBNX6Pfd5p+hSBqe/fEeNd7pc13QiAyGt7VdGMw4eRC4A==} engines: {node: '>= 14.15.0'} @@ -4832,6 +5741,15 @@ packages: peerDependencies: postcss: ^8.4 + postcss-markdown@0.36.0: + resolution: {integrity: sha512-rl7fs1r/LNSB2bWRhyZ+lM/0bwKv9fhl38/06gF6mKMo/NPnp55+K1dSTosSVjFZc0e1ppBlu+WT91ba0PMBfQ==} + peerDependencies: + postcss: '>=5.0.0' + postcss-syntax: '>=0.36.0' + + postcss-media-query-parser@0.2.3: + resolution: {integrity: sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==} + postcss-merge-idents@6.0.3: resolution: {integrity: sha512-1oIoAsODUs6IHQZkLQGO15uGEbK3EAl5wi9SS8hs45VgsxQfMnxvt+L+zIr7ifZFIH14cfAeVe2uCTa+SPRa3g==} engines: {node: ^14 || ^16 || >=18.0} @@ -5022,21 +5940,40 @@ packages: peerDependencies: postcss: ^8.0.3 + postcss-reporter@6.0.1: + resolution: {integrity: sha512-LpmQjfRWyabc+fRygxZjpRxfhRf9u/fdlKf4VHG4TSPbV2XNsuISzYW1KL+1aQzx53CAppa1bKG4APIB/DOXXw==} + engines: {node: '>=6'} + postcss-resolve-nested-selector@0.1.6: resolution: {integrity: sha512-0sglIs9Wmkzbr8lQwEyIzlDOOC9bGmfVKcJTaxv3vMmd3uo4o4DerC3En0bnmgceeql9BfC8hRkp7cg0fjdVqw==} + postcss-safe-parser@4.0.2: + resolution: {integrity: sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g==} + engines: {node: '>=6.0.0'} + postcss-safe-parser@7.0.1: resolution: {integrity: sha512-0AioNCJZ2DPYz5ABT6bddIqlhgwhpHZ/l65YAYo0BCIn0xiDpsnTHz0gnoTGk0OXZW0JRs+cDwL8u/teRdz+8A==} engines: {node: '>=18.0'} peerDependencies: postcss: ^8.4.31 + postcss-sass@0.3.5: + resolution: {integrity: sha512-B5z2Kob4xBxFjcufFnhQ2HqJQ2y/Zs/ic5EZbCywCkxKd756Q40cIQ/veRDwSrw1BF6+4wUgmpm0sBASqVi65A==} + + postcss-scss@2.1.1: + resolution: {integrity: sha512-jQmGnj0hSGLd9RscFw9LyuSVAa5Bl1/KBPqG1NQw9w8ND55nY4ZEsdlVuYJvLPpV+y0nwTV5v/4rHPzZRihQbA==} + engines: {node: '>=6.0.0'} + postcss-selector-not@8.0.1: resolution: {integrity: sha512-kmVy/5PYVb2UOhy0+LqUYAhKj7DUGDpSWa5LZqlkWJaaAV+dxxsOG3+St0yNLu6vsKD7Dmqx+nWQt0iil89+WA==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 + postcss-selector-parser@3.1.2: + resolution: {integrity: sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==} + engines: {node: '>=8'} + postcss-selector-parser@6.1.2: resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} engines: {node: '>=4'} @@ -5051,18 +5988,51 @@ packages: peerDependencies: postcss: ^8.4.23 + postcss-sorting@4.1.0: + resolution: {integrity: sha512-r4T2oQd1giURJdHQ/RMb72dKZCuLOdWx2B/XhXN1Y1ZdnwXsKH896Qz6vD4tFy9xSjpKNYhlZoJmWyhH/7JUQw==} + engines: {node: '>=6.14.3'} + + postcss-sorting@8.0.2: + resolution: {integrity: sha512-M9dkSrmU00t/jK7rF6BZSZauA5MAaBW4i5EnJXspMwt4iqTh/L9j6fgMnbElEOfyRyfLfVbIHj/R52zHzAPe1Q==} + peerDependencies: + postcss: ^8.4.20 + postcss-svgo@6.0.3: resolution: {integrity: sha512-dlrahRmxP22bX6iKEjOM+c8/1p+81asjKT+V5lrgOH944ryx/OHpclnIbGsKVd3uWOXFLYJwCVf0eEkJGvO96g==} engines: {node: ^14 || ^16 || >= 18} peerDependencies: postcss: ^8.4.31 + postcss-syntax@0.36.2: + resolution: {integrity: sha512-nBRg/i7E3SOHWxF3PpF5WnJM/jQ1YpY9000OaVXlAQj6Zp/kIqJxEDWIZ67tAd7NLuk7zqN4yqe9nc0oNAOs1w==} + peerDependencies: + postcss: '>=5.0.0' + postcss-html: '*' + postcss-jsx: '*' + postcss-less: '*' + postcss-markdown: '*' + postcss-scss: '*' + peerDependenciesMeta: + postcss-html: + optional: true + postcss-jsx: + optional: true + postcss-less: + optional: true + postcss-markdown: + optional: true + postcss-scss: + optional: true + postcss-unique-selectors@6.0.4: resolution: {integrity: sha512-K38OCaIrO8+PzpArzkLKB42dSARtC2tmG6PvD4b1o1Q2E9Os8jzfWFfSy/rixsHwohtsDdFtAWGjFVFUdwYaMg==} engines: {node: ^14 || ^16 || >=18.0} peerDependencies: postcss: ^8.4.31 + postcss-value-parser@3.3.1: + resolution: {integrity: sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==} + postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} @@ -5072,6 +6042,10 @@ packages: peerDependencies: postcss: ^8.4.31 + postcss@7.0.39: + resolution: {integrity: sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==} + engines: {node: '>=6.0.0'} + postcss@8.5.2: resolution: {integrity: sha512-MjOadfU3Ys9KYoX0AdkBlFEF1Vx37uCCeN4ZHnmwm9FfpbsGWMZeBLMmmpY+6Ocqod7mkdZ0DT31OlbsFrLlkA==} engines: {node: ^10 || ^12 || >=14} @@ -5152,6 +6126,10 @@ packages: queue@6.0.2: resolution: {integrity: sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==} + quick-lru@1.1.0: + resolution: {integrity: sha512-tRS7sTgyxMXtLum8L65daJnHUhfDUgboRdcWW2bR9vBfrj2+O5HSMbQOJfJJjIVSPFqbBCF37FpwWXGitDc5tA==} + engines: {node: '>=4'} + quick-lru@5.1.1: resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} engines: {node: '>=10'} @@ -5212,6 +6190,26 @@ packages: react-loadable: '*' webpack: '>=4.41.1 || 5.x' + react-remove-scroll-bar@2.3.8: + resolution: {integrity: sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react-remove-scroll@2.6.3: + resolution: {integrity: sha512-pnAi91oOk8g8ABQKGF5/M9qxmmOPxaAnopyTHYfqYEwJhyFrbbBtHuSgtKEoH0jpcxx5o3hXqH1mNd9/Oi+8iQ==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + react-router-config@5.1.1: resolution: {integrity: sha512-DuanZjaD8mQp1ppHjgnnUnyOlqYXZVjnov/JzFhjLEwd3Z4dYjMSnqrEzzGThH47vpCOqPPwJM2FtthLeJ8Pbg==} peerDependencies: @@ -5228,6 +6226,28 @@ packages: peerDependencies: react: '>=15' + react-style-singleton@2.2.3: + resolution: {integrity: sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + react-universal-interface@0.6.2: + resolution: {integrity: sha512-dg8yXdcQmvgR13RIlZbTRQOoUrDciFVoSBZILwjE2LFISxZZ8loVJKAkuzswl5js8BHda79bIb2b84ehU8IjXw==} + peerDependencies: + react: '*' + tslib: '*' + + react-use@17.6.0: + resolution: {integrity: sha512-OmedEScUMKFfzn1Ir8dBxiLLSOzhKe/dPZwVxcujweSj45aNM7BEGPb9BEVIgVEqEXx6f3/TsXzwIktNgUR02g==} + peerDependencies: + react: '*' + react-dom: '*' + react@19.0.0: resolution: {integrity: sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==} engines: {node: '>=0.10.0'} @@ -5236,6 +6256,14 @@ packages: resolution: {integrity: sha512-MbgfoNPANMdb4oRBNg5eqLbB2t2r+o5Ua1pNt8BqGp4I0FJZhuVSOj3PaBPni4azWuSzEdNn2evevzVmEk1ohQ==} engines: {node: '>=18'} + read-pkg-up@3.0.0: + resolution: {integrity: sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw==} + engines: {node: '>=4'} + + read-pkg@3.0.0: + resolution: {integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==} + engines: {node: '>=4'} + read-pkg@9.0.1: resolution: {integrity: sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA==} engines: {node: '>=18'} @@ -5274,6 +6302,10 @@ packages: resolution: {integrity: sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==} engines: {node: '>=6.0.0'} + redent@2.0.0: + resolution: {integrity: sha512-XNwrTx77JQCEMXTeb8movBKuK75MgH0RZkujNuDKCezemx/voapl9i2gCSi8WWm8+ox5ycJi1gxF22fR7c0Ciw==} + engines: {node: '>=4'} + reflect.getprototypeof@1.0.10: resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} engines: {node: '>= 0.4'} @@ -5291,6 +6323,10 @@ packages: regenerator-transform@0.15.2: resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} + regex-not@1.0.2: + resolution: {integrity: sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==} + engines: {node: '>=0.10.0'} + regexp-tree@0.1.27: resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==} hasBin: true @@ -5350,19 +6386,36 @@ packages: remark-parse@11.0.0: resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} + remark-parse@6.0.3: + resolution: {integrity: sha512-QbDXWN4HfKTUC0hHa4teU463KclLAnwpn/FBn87j9cKYJWWawbiLgMfP2Q4XwhxxuuuOxHlw+pSN0OKuJwyVvg==} + remark-rehype@11.1.1: resolution: {integrity: sha512-g/osARvjkBXb6Wo0XvAeXQohVta8i84ACbenPpoSsxTOQH/Ae0/RGP4WZgnMH5pMLpsj4FG7OHmcIcXxpza8eQ==} remark-stringify@11.0.0: resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} + remark-stringify@6.0.4: + resolution: {integrity: sha512-eRWGdEPMVudijE/psbIDNcnJLRVx3xhfuEsTDGgH4GsFF91dVhw5nhmnBppafJ7+NWINW6C7ZwWbi30ImJzqWg==} + + remark@10.0.1: + resolution: {integrity: sha512-E6lMuoLIy2TyiokHprMjcWNJ5UxfGQjaMSMhV+f4idM625UjjK4j798+gPs5mfjzDE6vL0oFKVeZM6gZVSVrzQ==} + renderkid@3.0.0: resolution: {integrity: sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==} + repeat-element@1.1.4: + resolution: {integrity: sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==} + engines: {node: '>=0.10.0'} + repeat-string@1.6.1: resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} engines: {node: '>=0.10'} + replace-ext@1.0.0: + resolution: {integrity: sha512-vuNYXC7gG7IeVNBC1xUllqCcZKRbJoSPOBhnTEcAIiKCsbuef6zO3F0Rve3isPMMoNoQRWjQwbAgAjHUHniyEA==} + engines: {node: '>= 0.10'} + require-from-string@2.0.2: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} @@ -5373,9 +6426,16 @@ packages: requires-port@1.0.0: resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + resize-observer-polyfill@1.5.1: + resolution: {integrity: sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==} + resolve-alpn@1.2.1: resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} + resolve-from@3.0.0: + resolution: {integrity: sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==} + engines: {node: '>=4'} + resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} @@ -5390,6 +6450,10 @@ packages: resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + resolve-url@0.2.1: + resolution: {integrity: sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==} + deprecated: https://github.com/lydell/resolve-url#deprecated + resolve@1.22.10: resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} engines: {node: '>= 0.4'} @@ -5407,6 +6471,10 @@ packages: resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} engines: {node: '>=18'} + ret@0.1.15: + resolution: {integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==} + engines: {node: '>=0.12'} + retry@0.13.1: resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} engines: {node: '>= 4'} @@ -5418,11 +6486,19 @@ packages: rfdc@1.4.1: resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} + rimraf@2.6.3: + resolution: {integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + rimraf@3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true + rtl-css-js@1.16.1: + resolution: {integrity: sha512-lRQgou1mu19e+Ya0LsTvKrVJ5TYUbqCVPAiImX3UfLTenarvPUl1QFdvu5Z3PYmHT9RCcwIfbjRQBntExyj3Zg==} + rtlcss@4.3.0: resolution: {integrity: sha512-FI+pHEn7Wc4NqKXMXFM+VAYKEj/mRIcW4h24YVwVtyjI+EqGrLc2Hx/Ny0lrZ21cBWU2goLy36eqMcNj3AQJig==} engines: {node: '>=12.0.0'} @@ -5449,6 +6525,9 @@ packages: resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} engines: {node: '>= 0.4'} + safe-regex@1.1.0: + resolution: {integrity: sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==} + safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} @@ -5470,6 +6549,10 @@ packages: resolution: {integrity: sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==} engines: {node: '>= 10.13.0'} + screenfull@5.2.0: + resolution: {integrity: sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA==} + engines: {node: '>=0.10.0'} + search-insights@2.17.2: resolution: {integrity: sha512-zFNpOpUO+tY2D85KrxJ+aqwnIfdEGi06UH2+xEb+Bp9Mwznmauqc9djbnBibJO5mpfUPPa8st6Sx65+vbeO45g==} @@ -5488,6 +6571,10 @@ packages: resolution: {integrity: sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==} engines: {node: '>=12'} + semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + semver@6.3.1: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true @@ -5523,10 +6610,18 @@ packages: resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} engines: {node: '>= 0.4'} + set-harmonic-interval@1.0.1: + resolution: {integrity: sha512-AhICkFV84tBP1aWqPwLZqFvAwqEoVA9kxNMniGEUvzOlm4vLmOFLiTT3UZ6bziJTy4bOVpzWGTfSCbmaayGx8g==} + engines: {node: '>=6.9'} + set-proto@1.0.0: resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} engines: {node: '>= 0.4'} + set-value@2.0.1: + resolution: {integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==} + engines: {node: '>=0.10.0'} + setprototypeof@1.1.0: resolution: {integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==} @@ -5596,6 +6691,10 @@ packages: resolution: {integrity: sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==} engines: {node: '>=8'} + slash@2.0.0: + resolution: {integrity: sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==} + engines: {node: '>=6'} + slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} @@ -5604,6 +6703,10 @@ packages: resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} engines: {node: '>=12'} + slice-ansi@2.1.0: + resolution: {integrity: sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==} + engines: {node: '>=6'} + slice-ansi@4.0.0: resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} engines: {node: '>=10'} @@ -5619,6 +6722,18 @@ packages: snake-case@3.0.4: resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} + snapdragon-node@2.1.1: + resolution: {integrity: sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==} + engines: {node: '>=0.10.0'} + + snapdragon-util@3.0.1: + resolution: {integrity: sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==} + engines: {node: '>=0.10.0'} + + snapdragon@0.8.2: + resolution: {integrity: sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==} + engines: {node: '>=0.10.0'} + sockjs@0.3.24: resolution: {integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==} @@ -5630,9 +6745,21 @@ packages: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} + source-map-resolve@0.5.3: + resolution: {integrity: sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==} + deprecated: See https://github.com/lydell/source-map-resolve#deprecated + source-map-support@0.5.21: resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + source-map-url@0.4.1: + resolution: {integrity: sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==} + deprecated: See https://github.com/lydell/source-map-url#deprecated + + source-map@0.5.6: + resolution: {integrity: sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA==} + engines: {node: '>=0.10.0'} + source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} @@ -5666,6 +6793,14 @@ packages: resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==} engines: {node: '>=6.0.0'} + specificity@0.4.1: + resolution: {integrity: sha512-1klA3Gi5PD1Wv9Q0wUoOQN1IWAuPu0D1U03ThXTr0cJ20+/iq2tHSDnK7Kk/0LXJ1ztUB2/1Os0wKmfyNgUQfg==} + hasBin: true + + split-string@3.1.0: + resolution: {integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==} + engines: {node: '>=0.10.0'} + sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} @@ -5676,6 +6811,25 @@ packages: stable-hash@0.0.4: resolution: {integrity: sha512-LjdcbuBeLcdETCrPn9i8AYAZ1eCtu4ECAWtP7UleOiZ9LzVxRzzUZEoZ8zB24nhkQnDWyET0I+3sWokSDS3E7g==} + stack-generator@2.0.10: + resolution: {integrity: sha512-mwnua/hkqM6pF4k8SnmZ2zfETsRUpWXREfA/goT8SLCV4iOFa4bzOX2nDipWAZFPTjLvQB82f5yaodMVhK0yJQ==} + + stackframe@1.3.4: + resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} + + stacktrace-gps@3.1.2: + resolution: {integrity: sha512-GcUgbO4Jsqqg6RxfyTHFiPxdPqF+3LFmQhm7MgCuYQOYuWyqxo5pwRPz5d/u6/WYJdEnWfK4r+jGbyD8TSggXQ==} + + stacktrace-js@2.0.2: + resolution: {integrity: sha512-Je5vBeY4S1r/RnLydLl0TBTi3F2qdfWmYsGvtfZgEI+SCprPppaIhQf5nGcal4gI4cGpCV/duLcAzT1np6sQqg==} + + state-toggle@1.0.3: + resolution: {integrity: sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ==} + + static-extend@0.1.2: + resolution: {integrity: sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==} + engines: {node: '>=0.10.0'} + statuses@1.5.0: resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} engines: {node: '>= 0.6'} @@ -5691,6 +6845,10 @@ packages: resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} engines: {node: '>=0.6.19'} + string-width@3.1.0: + resolution: {integrity: sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==} + engines: {node: '>=6'} + string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} @@ -5732,6 +6890,9 @@ packages: string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + stringify-entities@1.3.2: + resolution: {integrity: sha512-nrBAQClJAPN2p+uGCVJRPIPakKeKWZ9GtBCmormE7pWOSlHat7+x5A8gx85M7HM5Dt0BP3pP5RhVW77WdbJJ3A==} + stringify-entities@4.0.4: resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} @@ -5739,6 +6900,10 @@ packages: resolution: {integrity: sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==} engines: {node: '>=4'} + strip-ansi@5.2.0: + resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==} + engines: {node: '>=6'} + strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} @@ -5763,6 +6928,10 @@ packages: resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} engines: {node: '>=12'} + strip-indent@2.0.0: + resolution: {integrity: sha512-RsSNPLpq6YUL7QYy44RnPVTn/lcVZtb48Uof3X5JLbF4zD/Gs7ZFDv2HWol+leoQN2mT86LAzSshGfkTlSOpsA==} + engines: {node: '>=4'} + strip-indent@4.0.0: resolution: {integrity: sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==} engines: {node: '>=12'} @@ -5775,6 +6944,9 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} + style-search@0.1.0: + resolution: {integrity: sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==} + style-to-object@1.0.8: resolution: {integrity: sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==} @@ -5784,6 +6956,9 @@ packages: peerDependencies: postcss: ^8.4.31 + stylelint-config-rational-order@0.1.2: + resolution: {integrity: sha512-Qo7ZQaihCwTqijfZg4sbdQQHtugOX/B1/fYh018EiDZHW+lkqH9uHOnsDwDPGZrYJuB6CoyI7MZh2ecw2dOkew==} + stylelint-config-recommended@15.0.0: resolution: {integrity: sha512-9LejMFsat7L+NXttdHdTq94byn25TD+82bzGRiV1Pgasl99pWnwipXS5DguTpp3nP1XjvLXVnEJIuYBfsRjRkA==} engines: {node: '>=18.12.0'} @@ -5796,11 +6971,37 @@ packages: peerDependencies: stylelint: ^16.13.0 + stylelint-order@2.2.1: + resolution: {integrity: sha512-019KBV9j8qp1MfBjJuotse6MgaZqGVtXMc91GU9MsS9Feb+jYUvUU3Z8XiClqPdqJZQ0ryXQJGg3U3PcEjXwfg==} + engines: {node: '>=6'} + peerDependencies: + stylelint: ^9.10.1 || ^10.0.0 + + stylelint-order@6.0.4: + resolution: {integrity: sha512-0UuKo4+s1hgQ/uAxlYU4h0o0HS4NiQDud0NAUNI0aa8FJdmYHA5ZZTFHiV5FpmE3071e9pZx5j0QpVJW5zOCUA==} + peerDependencies: + stylelint: ^14.0.0 || ^15.0.0 || ^16.0.1 + stylelint@16.14.1: resolution: {integrity: sha512-oqCL7AC3786oTax35T/nuLL8p2C3k/8rHKAooezrPGRvUX0wX+qqs5kMWh5YYT4PHQgVDobHT4tw55WgpYG6Sw==} engines: {node: '>=18.12.0'} hasBin: true + stylelint@9.10.1: + resolution: {integrity: sha512-9UiHxZhOAHEgeQ7oLGwrwoDR8vclBKlSX7r4fH0iuu0SfPwFaLkb1c7Q2j1cqg9P7IDXeAV2TvQML/fRQzGBBQ==} + engines: {node: '>=6'} + hasBin: true + + stylis@4.3.6: + resolution: {integrity: sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==} + + sugarss@2.0.0: + resolution: {integrity: sha512-WfxjozUk0UVA4jm+U1d736AUpzSrNsQcIbyOkoE364GrtWmIrFdk5lksEupgWMD4VaT/0kVx1dobpiDumSgmJQ==} + + supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} @@ -5832,6 +7033,10 @@ packages: resolution: {integrity: sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==} engines: {node: ^14.18.0 || >=16.0.0} + table@5.4.6: + resolution: {integrity: sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==} + engines: {node: '>=6.0.0'} + table@6.9.0: resolution: {integrity: sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==} engines: {node: '>=10.0.0'} @@ -5868,6 +7073,10 @@ packages: text-table@0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + throttle-debounce@3.0.1: + resolution: {integrity: sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg==} + engines: {node: '>=10'} + thunky@1.1.0: resolution: {integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==} @@ -5881,13 +7090,28 @@ packages: resolution: {integrity: sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==} engines: {node: '>=12.0.0'} + to-object-path@0.3.0: + resolution: {integrity: sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==} + engines: {node: '>=0.10.0'} + + to-regex-range@2.1.1: + resolution: {integrity: sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==} + engines: {node: '>=0.10.0'} + to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} + to-regex@3.0.2: + resolution: {integrity: sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==} + engines: {node: '>=0.10.0'} + to-vfile@6.1.0: resolution: {integrity: sha512-BxX8EkCxOAZe+D/ToHdDsJcVI4HqQfmw0tCkp31zf3dNP/XWIAjU4CmeuSwsSoOzOTqHPOL0KUzyZqJplkD0Qw==} + toggle-selection@1.0.6: + resolution: {integrity: sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==} + toidentifier@1.0.1: resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} engines: {node: '>=0.6'} @@ -5899,6 +7123,17 @@ packages: trim-lines@3.0.1: resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} + trim-newlines@2.0.0: + resolution: {integrity: sha512-MTBWv3jhVjTU7XR3IQHllbiJs8sc75a80OEhB6or/q7pLTWgQ0bMGQXXYQSrSuXe6WiKWDZ5txXY5P59a/coVA==} + engines: {node: '>=4'} + + trim-trailing-lines@1.1.4: + resolution: {integrity: sha512-rjUWSqnfTNrjbB9NQWfPMH/xRK1deHeGsHoVfpxJ++XeYXE0d6B1En37AHfw3jtfTU7dzMzZL2jjpe8Qb5gLIQ==} + + trim@0.0.1: + resolution: {integrity: sha512-YzQV+TZg4AxpKxaTHK3c3D+kRDCGVEE7LemdlQZoQXn0iennk10RsIoY6ikzAqJTc9Xjl9C1/waHom/J86ziAQ==} + deprecated: Use String.prototype.trim() instead + trough@1.0.5: resolution: {integrity: sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==} @@ -5911,6 +7146,9 @@ packages: peerDependencies: typescript: '>=4.8.4' + ts-easing@0.2.0: + resolution: {integrity: sha512-Z86EW+fFFh/IFB1fqQ3/+7Zpf9t2ebOAxNI/V6Wo7r5gqiqtxmgTlQ1qbqQcjLKYeSHPTsEmvlJUDg/EuL0uHQ==} + tsconfig-paths@3.15.0: resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} @@ -5988,6 +7226,9 @@ packages: undici-types@6.20.0: resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==} + unherit@1.1.3: + resolution: {integrity: sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ==} + unicode-canonical-property-names-ecmascript@2.0.1: resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==} engines: {node: '>=4'} @@ -6015,9 +7256,19 @@ packages: unified@11.0.5: resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} + unified@7.1.0: + resolution: {integrity: sha512-lbk82UOIGuCEsZhPj8rNAkXSDXd6p0QLzIuSsCdxrqnqU56St4eyOB+AlXsVgVeRmetPTYydIuvFfpDIed8mqw==} + unified@9.2.2: resolution: {integrity: sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==} + union-value@1.0.1: + resolution: {integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==} + engines: {node: '>=0.10.0'} + + uniq@1.0.1: + resolution: {integrity: sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA==} + unique-string@3.0.0: resolution: {integrity: sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==} engines: {node: '>=12'} @@ -6025,6 +7276,12 @@ packages: unist-util-find-after@3.0.0: resolution: {integrity: sha512-ojlBqfsBftYXExNu3+hHLfJQ/X1jYY/9vdm4yZWjIbf0VuWF6CRufci1ZyoD/wV2TYMKxXUoNuoqwy+CkgzAiQ==} + unist-util-find-all-after@1.0.5: + resolution: {integrity: sha512-lWgIc3rrTMTlK1Y0hEuL+k+ApzFk78h+lsaa2gHf63Gp5Ww+mt11huDniuaoq1H+XMK2lIIjjPkncxXcDp3QDw==} + + unist-util-is@3.0.0: + resolution: {integrity: sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==} + unist-util-is@4.1.0: resolution: {integrity: sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==} @@ -6037,18 +7294,30 @@ packages: unist-util-position@5.0.0: resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} + unist-util-remove-position@1.1.4: + resolution: {integrity: sha512-tLqd653ArxJIPnKII6LMZwH+mb5q+n/GtXQZo6S6csPRs5zB0u79Yw8ouR3wTw8wxvdJFhpP6Y7jorWdCgLO0A==} + + unist-util-stringify-position@1.1.2: + resolution: {integrity: sha512-pNCVrk64LZv1kElr0N1wPiHEUoXNVFERp+mlTg/s9R5Lwg87f9bM/3sQB99w+N9D/qnM9ar3+AKDBwo/gm/iQQ==} + unist-util-stringify-position@2.0.3: resolution: {integrity: sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==} unist-util-stringify-position@4.0.0: resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} + unist-util-visit-parents@2.1.2: + resolution: {integrity: sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g==} + unist-util-visit-parents@3.1.1: resolution: {integrity: sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==} unist-util-visit-parents@6.0.1: resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} + unist-util-visit@1.4.1: + resolution: {integrity: sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==} + unist-util-visit@2.0.3: resolution: {integrity: sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==} @@ -6063,6 +7332,10 @@ packages: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} + unset-value@1.0.0: + resolution: {integrity: sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==} + engines: {node: '>=0.10.0'} + update-browserslist-db@1.1.2: resolution: {integrity: sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==} hasBin: true @@ -6076,6 +7349,10 @@ packages: uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + urix@0.1.0: + resolution: {integrity: sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==} + deprecated: Please see https://github.com/lydell/urix#deprecated + url-loader@4.1.1: resolution: {integrity: sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==} engines: {node: '>= 10.13.0'} @@ -6086,6 +7363,30 @@ packages: file-loader: optional: true + use-callback-ref@1.3.3: + resolution: {integrity: sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + use-sidecar@1.1.3: + resolution: {integrity: sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + use@3.1.1: + resolution: {integrity: sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==} + engines: {node: '>=0.10.0'} + util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} @@ -6114,18 +7415,27 @@ packages: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} + vfile-location@2.0.6: + resolution: {integrity: sha512-sSFdyCP3G6Ka0CEmN83A2YCMKIieHx0EDaj5IDP4g1pa5ZJ4FJDvpO0WODLxo4LUX4oe52gmSCK7Jw4SBghqxA==} + vfile-location@3.2.0: resolution: {integrity: sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA==} vfile-location@5.0.3: resolution: {integrity: sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==} + vfile-message@1.1.1: + resolution: {integrity: sha512-1WmsopSGhWt5laNir+633LszXvZ+Z/lxveBf6yhGsqnQIhlhzooZae7zV6YVM1Sdkw68dtAW3ow0pOdPANugvA==} + vfile-message@2.0.4: resolution: {integrity: sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==} vfile-message@4.0.2: resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} + vfile@3.0.1: + resolution: {integrity: sha512-y7Y3gH9BsUSdD4KzHsuMaCzRjglXN0W2EcMf0gpvu6+SbsGhMje7xDc8AEoeXy6mIwCKMI6BkjMsRjzQbhMEjQ==} + vfile@4.2.1: resolution: {integrity: sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==} @@ -6266,6 +7576,10 @@ packages: resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + write@1.0.3: + resolution: {integrity: sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==} + engines: {node: '>=4'} + ws@7.5.10: resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} engines: {node: '>=8.3.0'} @@ -6290,6 +7604,9 @@ packages: utf-8-validate: optional: true + x-is-string@0.1.0: + resolution: {integrity: sha512-GojqklwG8gpzOVEVki5KudKNoq7MbbjYZCbyWzEz7tyPA7eleiE0+ePwOWQQRb5fm86rD3S8Tc0tSFf3AOv50w==} + xdg-basedir@5.1.0: resolution: {integrity: sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==} engines: {node: '>=12'} @@ -6314,6 +7631,9 @@ packages: engines: {node: '>= 14'} hasBin: true + yargs-parser@10.1.0: + resolution: {integrity: sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==} + yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} @@ -8284,6 +9604,23 @@ snapshots: '@eslint/core': 0.12.0 levn: 0.4.1 + '@floating-ui/core@1.6.9': + dependencies: + '@floating-ui/utils': 0.2.9 + + '@floating-ui/dom@1.6.13': + dependencies: + '@floating-ui/core': 1.6.9 + '@floating-ui/utils': 0.2.9 + + '@floating-ui/react-dom@2.1.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + dependencies: + '@floating-ui/dom': 1.6.13 + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + + '@floating-ui/utils@0.2.9': {} + '@hapi/hoek@9.3.0': {} '@hapi/topo@5.1.0': @@ -8380,11 +9717,18 @@ snapshots: '@types/react': 19.0.10 react: 19.0.0 + '@mrmlnc/readdir-enhanced@2.2.1': + dependencies: + call-me-maybe: 1.0.2 + glob-to-regexp: 0.3.0 + '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 run-parallel: 1.2.0 + '@nodelib/fs.stat@1.1.3': {} + '@nodelib/fs.stat@2.0.5': {} '@nodelib/fs.walk@1.2.8': @@ -8410,6 +9754,203 @@ snapshots: '@polka/url@1.0.0-next.28': {} + '@radix-ui/primitive@1.1.1': {} + + '@radix-ui/react-arrow@1.1.2(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + dependencies: + '@radix-ui/react-primitive': 2.0.2(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + optionalDependencies: + '@types/react': 19.0.10 + + '@radix-ui/react-compose-refs@1.1.1(@types/react@19.0.10)(react@19.0.0)': + dependencies: + react: 19.0.0 + optionalDependencies: + '@types/react': 19.0.10 + + '@radix-ui/react-context@1.1.1(@types/react@19.0.10)(react@19.0.0)': + dependencies: + react: 19.0.0 + optionalDependencies: + '@types/react': 19.0.10 + + '@radix-ui/react-dialog@1.1.6(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + dependencies: + '@radix-ui/primitive': 1.1.1 + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-context': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-dismissable-layer': 1.1.5(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-focus-guards': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-focus-scope': 1.1.2(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-id': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-portal': 1.1.4(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-presence': 1.1.2(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-primitive': 2.0.2(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-slot': 1.1.2(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.10)(react@19.0.0) + aria-hidden: 1.2.4 + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + react-remove-scroll: 2.6.3(@types/react@19.0.10)(react@19.0.0) + optionalDependencies: + '@types/react': 19.0.10 + + '@radix-ui/react-dismissable-layer@1.1.5(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + dependencies: + '@radix-ui/primitive': 1.1.1 + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-primitive': 2.0.2(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-use-escape-keydown': 1.1.0(@types/react@19.0.10)(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + optionalDependencies: + '@types/react': 19.0.10 + + '@radix-ui/react-focus-guards@1.1.1(@types/react@19.0.10)(react@19.0.0)': + dependencies: + react: 19.0.0 + optionalDependencies: + '@types/react': 19.0.10 + + '@radix-ui/react-focus-scope@1.1.2(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-primitive': 2.0.2(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.10)(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + optionalDependencies: + '@types/react': 19.0.10 + + '@radix-ui/react-id@1.1.0(@types/react@19.0.10)(react@19.0.0)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.10)(react@19.0.0) + react: 19.0.0 + optionalDependencies: + '@types/react': 19.0.10 + + '@radix-ui/react-popper@1.2.2(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + dependencies: + '@floating-ui/react-dom': 2.1.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-arrow': 1.1.2(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-context': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-primitive': 2.0.2(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-use-rect': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-use-size': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/rect': 1.1.0 + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + optionalDependencies: + '@types/react': 19.0.10 + + '@radix-ui/react-portal@1.1.4(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + dependencies: + '@radix-ui/react-primitive': 2.0.2(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.10)(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + optionalDependencies: + '@types/react': 19.0.10 + + '@radix-ui/react-presence@1.1.2(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.10)(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + optionalDependencies: + '@types/react': 19.0.10 + + '@radix-ui/react-primitive@2.0.2(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + dependencies: + '@radix-ui/react-slot': 1.1.2(@types/react@19.0.10)(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + optionalDependencies: + '@types/react': 19.0.10 + + '@radix-ui/react-slot@1.1.2(@types/react@19.0.10)(react@19.0.0)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.10)(react@19.0.0) + react: 19.0.0 + optionalDependencies: + '@types/react': 19.0.10 + + '@radix-ui/react-tooltip@1.1.8(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + dependencies: + '@radix-ui/primitive': 1.1.1 + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-context': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-dismissable-layer': 1.1.5(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-id': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-popper': 1.2.2(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-portal': 1.1.4(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-presence': 1.1.2(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-primitive': 2.0.2(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-slot': 1.1.2(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-visually-hidden': 1.1.2(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + optionalDependencies: + '@types/react': 19.0.10 + + '@radix-ui/react-use-callback-ref@1.1.0(@types/react@19.0.10)(react@19.0.0)': + dependencies: + react: 19.0.0 + optionalDependencies: + '@types/react': 19.0.10 + + '@radix-ui/react-use-controllable-state@1.1.0(@types/react@19.0.10)(react@19.0.0)': + dependencies: + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.10)(react@19.0.0) + react: 19.0.0 + optionalDependencies: + '@types/react': 19.0.10 + + '@radix-ui/react-use-escape-keydown@1.1.0(@types/react@19.0.10)(react@19.0.0)': + dependencies: + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.10)(react@19.0.0) + react: 19.0.0 + optionalDependencies: + '@types/react': 19.0.10 + + '@radix-ui/react-use-layout-effect@1.1.0(@types/react@19.0.10)(react@19.0.0)': + dependencies: + react: 19.0.0 + optionalDependencies: + '@types/react': 19.0.10 + + '@radix-ui/react-use-rect@1.1.0(@types/react@19.0.10)(react@19.0.0)': + dependencies: + '@radix-ui/rect': 1.1.0 + react: 19.0.0 + optionalDependencies: + '@types/react': 19.0.10 + + '@radix-ui/react-use-size@1.1.0(@types/react@19.0.10)(react@19.0.0)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.10)(react@19.0.0) + react: 19.0.0 + optionalDependencies: + '@types/react': 19.0.10 + + '@radix-ui/react-visually-hidden@1.1.2(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + dependencies: + '@radix-ui/react-primitive': 2.0.2(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + optionalDependencies: + '@types/react': 19.0.10 + + '@radix-ui/rect@1.1.0': {} + '@rtsao/scc@1.1.0': {} '@sideway/address@4.1.5': @@ -8606,6 +10147,11 @@ snapshots: '@types/gensync@1.0.4': {} + '@types/glob@7.2.0': + dependencies: + '@types/minimatch': 5.1.2 + '@types/node': 22.13.1 + '@types/gtag.js@0.0.12': {} '@types/hast@2.3.10': @@ -8638,6 +10184,8 @@ snapshots: dependencies: '@types/istanbul-lib-report': 3.0.3 + '@types/js-cookie@2.2.7': {} + '@types/json-schema@7.0.15': {} '@types/json5@0.0.29': {} @@ -8650,6 +10198,8 @@ snapshots: '@types/mime@1.3.5': {} + '@types/minimatch@5.1.2': {} + '@types/ms@2.1.0': {} '@types/node-forge@1.3.11': @@ -8726,6 +10276,16 @@ snapshots: '@types/unist@3.0.3': {} + '@types/vfile-message@2.0.0': + dependencies: + vfile-message: 4.0.2 + + '@types/vfile@3.0.2': + dependencies: + '@types/node': 22.13.1 + '@types/unist': 3.0.3 + '@types/vfile-message': 2.0.0 + '@types/ws@8.5.14': dependencies: '@types/node': 22.13.1 @@ -8932,6 +10492,8 @@ snapshots: '@webassemblyjs/ast': 1.14.1 '@xtuc/long': 4.2.2 + '@xobotyi/scrollbar-width@1.9.5': {} + '@xtuc/ieee754@1.2.0': {} '@xtuc/long@4.2.2': {} @@ -9022,10 +10584,16 @@ snapshots: ansi-html-community@0.0.8: {} + ansi-regex@4.1.1: {} + ansi-regex@5.0.1: {} ansi-regex@6.1.0: {} + ansi-styles@3.2.1: + dependencies: + color-convert: 1.9.3 + ansi-styles@4.3.0: dependencies: color-convert: 2.0.1 @@ -9047,13 +10615,25 @@ snapshots: argparse@2.0.1: {} + aria-hidden@1.2.4: + dependencies: + tslib: 2.8.1 + aria-query@5.3.2: {} + arr-diff@4.0.0: {} + + arr-flatten@1.1.0: {} + + arr-union@3.1.0: {} + array-buffer-byte-length@1.0.2: dependencies: call-bound: 1.0.3 is-array-buffer: 3.0.5 + array-find-index@1.0.2: {} + array-flatten@1.1.1: {} array-includes@3.1.8: @@ -9065,8 +10645,16 @@ snapshots: get-intrinsic: 1.2.7 is-string: 1.1.1 + array-union@1.0.2: + dependencies: + array-uniq: 1.0.3 + array-union@2.1.0: {} + array-uniq@1.0.3: {} + + array-unique@0.3.2: {} + array.prototype.findlast@1.2.5: dependencies: call-bind: 1.0.8 @@ -9117,8 +10705,14 @@ snapshots: get-intrinsic: 1.2.7 is-array-buffer: 3.0.5 + arrify@1.0.1: {} + + assign-symbols@1.0.0: {} + ast-types-flow@0.0.8: {} + astral-regex@1.0.0: {} + astral-regex@2.0.0: {} astring@1.9.0: {} @@ -9127,6 +10721,8 @@ snapshots: at-least-node@1.0.0: {} + atob@2.1.2: {} + autocomplete.js@0.37.1: dependencies: immediate: 3.3.0 @@ -9141,6 +10737,16 @@ snapshots: postcss: 8.5.2 postcss-value-parser: 4.2.0 + autoprefixer@9.8.8: + dependencies: + browserslist: 4.24.4 + caniuse-lite: 1.0.30001699 + normalize-range: 0.1.2 + num2fraction: 1.2.2 + picocolors: 0.2.1 + postcss: 7.0.39 + postcss-value-parser: 4.2.0 + available-typed-arrays@1.0.7: dependencies: possible-typed-array-names: 1.1.0 @@ -9202,6 +10808,16 @@ snapshots: base64-js@1.5.1: {} + base@0.11.2: + dependencies: + cache-base: 1.0.1 + class-utils: 0.3.6 + component-emitter: 1.3.1 + define-property: 1.0.0 + isobject: 3.0.1 + mixin-deep: 1.3.2 + pascalcase: 0.1.1 + batch@0.6.1: {} bcp-47-match@1.0.3: {} @@ -9267,6 +10883,21 @@ snapshots: dependencies: balanced-match: 1.0.2 + braces@2.3.2: + dependencies: + arr-flatten: 1.1.0 + array-unique: 0.3.2 + extend-shallow: 2.0.1 + fill-range: 4.0.0 + isobject: 3.0.1 + repeat-element: 1.1.4 + snapdragon: 0.8.2 + snapdragon-node: 2.1.1 + split-string: 3.1.0 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + braces@3.0.3: dependencies: fill-range: 7.1.1 @@ -9291,6 +10922,18 @@ snapshots: bytes@3.1.2: {} + cache-base@1.0.1: + dependencies: + collection-visit: 1.0.0 + component-emitter: 1.3.1 + get-value: 2.0.6 + has-value: 1.0.0 + isobject: 3.0.1 + set-value: 2.0.1 + to-object-path: 0.3.0 + union-value: 1.0.1 + unset-value: 1.0.0 + cacheable-lookup@7.0.0: {} cacheable-request@10.2.14: @@ -9325,6 +10968,18 @@ snapshots: call-bind-apply-helpers: 1.0.1 get-intrinsic: 1.2.7 + call-me-maybe@1.0.2: {} + + caller-callsite@2.0.0: + dependencies: + callsites: 2.0.0 + + caller-path@2.0.0: + dependencies: + caller-callsite: 2.0.0 + + callsites@2.0.0: {} + callsites@3.1.0: {} camel-case@4.1.2: @@ -9332,6 +10987,14 @@ snapshots: pascal-case: 3.1.2 tslib: 2.8.1 + camelcase-keys@4.2.0: + dependencies: + camelcase: 4.1.0 + map-obj: 2.0.0 + quick-lru: 1.1.0 + + camelcase@4.1.0: {} + camelcase@6.3.0: {} camelcase@7.0.1: {} @@ -9345,8 +11008,16 @@ snapshots: caniuse-lite@1.0.30001699: {} + ccount@1.1.0: {} + ccount@2.0.1: {} + chalk@2.4.2: + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + chalk@4.1.2: dependencies: ansi-styles: 4.3.0 @@ -9356,12 +11027,20 @@ snapshots: char-regex@1.0.2: {} + character-entities-html4@1.1.4: {} + character-entities-html4@2.1.0: {} + character-entities-legacy@1.1.4: {} + character-entities-legacy@3.0.0: {} + character-entities@1.2.4: {} + character-entities@2.0.2: {} + character-reference-invalid@1.1.4: {} + character-reference-invalid@2.0.1: {} cheerio-select@2.1.0: @@ -9401,6 +11080,13 @@ snapshots: ci-info@4.1.0: {} + class-utils@0.3.6: + dependencies: + arr-union: 3.1.0 + define-property: 0.2.5 + isobject: 3.0.1 + static-extend: 0.1.2 + clean-css@5.3.3: dependencies: source-map: 0.6.1 @@ -9434,14 +11120,32 @@ snapshots: kind-of: 6.0.3 shallow-clone: 3.0.1 + clone-regexp@1.0.1: + dependencies: + is-regexp: 1.0.0 + is-supported-regexp-flag: 1.0.1 + clsx@2.1.1: {} + collapse-white-space@1.0.6: {} + collapse-white-space@2.1.0: {} + collection-visit@1.0.0: + dependencies: + map-visit: 1.0.0 + object-visit: 1.0.1 + + color-convert@1.9.3: + dependencies: + color-name: 1.1.3 + color-convert@2.0.1: dependencies: color-name: 1.1.4 + color-name@1.1.3: {} + color-name@1.1.4: {} color-support@1.1.3: {} @@ -9472,6 +11176,8 @@ snapshots: common-path-prefix@3.0.0: {} + component-emitter@1.3.1: {} + compressible@2.0.18: dependencies: mime-db: 1.53.0 @@ -9523,8 +11229,14 @@ snapshots: cookie@0.7.1: {} + copy-descriptor@0.1.1: {} + copy-text-to-clipboard@3.2.0: {} + copy-to-clipboard@3.3.3: + dependencies: + toggle-selection: 1.0.6 + copy-webpack-plugin@11.0.0(webpack@5.97.1): dependencies: fast-glob: 3.3.3 @@ -9545,6 +11257,13 @@ snapshots: core-util-is@1.0.3: {} + cosmiconfig@5.2.1: + dependencies: + import-fresh: 2.0.0 + is-directory: 0.3.1 + js-yaml: 3.14.1 + parse-json: 4.0.0 + cosmiconfig@6.0.0: dependencies: '@types/parse-json': 4.0.2 @@ -9599,6 +11318,10 @@ snapshots: postcss-selector-parser: 7.1.0 postcss-value-parser: 4.2.0 + css-in-js-utils@3.1.0: + dependencies: + hyphenate-style-name: 1.1.0 + css-loader@6.11.0(webpack@5.97.1): dependencies: icss-utils: 5.1.0(postcss@8.5.2) @@ -9646,6 +11369,11 @@ snapshots: css-selector-parser@1.4.1: {} + css-tree@1.1.3: + dependencies: + mdn-data: 2.0.14 + source-map: 0.6.1 + css-tree@2.2.1: dependencies: mdn-data: 2.0.28 @@ -9728,6 +11456,10 @@ snapshots: csstype@3.1.3: {} + currently-unhandled@0.4.1: + dependencies: + array-find-index: 1.0.2 + damerau-levenshtein@1.0.8: {} data-view-buffer@1.0.2: @@ -9762,10 +11494,19 @@ snapshots: dependencies: ms: 2.1.3 + decamelize-keys@1.1.1: + dependencies: + decamelize: 1.2.0 + map-obj: 1.0.1 + + decamelize@1.2.0: {} + decode-named-character-reference@1.0.2: dependencies: character-entities: 2.0.2 + decode-uri-component@0.2.2: {} + decompress-response@6.0.0: dependencies: mimic-response: 3.1.0 @@ -9796,6 +11537,19 @@ snapshots: has-property-descriptors: 1.0.2 object-keys: 1.1.1 + define-property@0.2.5: + dependencies: + is-descriptor: 0.1.7 + + define-property@1.0.0: + dependencies: + is-descriptor: 1.0.3 + + define-property@2.0.2: + dependencies: + is-descriptor: 1.0.3 + isobject: 3.0.1 + del@6.1.1: dependencies: globby: 11.1.0 @@ -9815,6 +11569,8 @@ snapshots: destroy@1.2.0: {} + detect-node-es@1.1.0: {} + detect-node@2.1.0: {} detect-port-alt@1.1.6: @@ -9835,6 +11591,10 @@ snapshots: dependencies: dequal: 2.0.3 + dir-glob@2.2.2: + dependencies: + path-type: 3.0.0 + dir-glob@3.0.1: dependencies: path-type: 4.0.0 @@ -9873,6 +11633,11 @@ snapshots: dependencies: utila: 0.4.0 + dom-serializer@0.2.2: + dependencies: + domelementtype: 2.3.0 + entities: 2.2.0 + dom-serializer@1.4.1: dependencies: domelementtype: 2.3.0 @@ -9885,8 +11650,14 @@ snapshots: domhandler: 5.0.3 entities: 4.5.0 + domelementtype@1.3.1: {} + domelementtype@2.3.0: {} + domhandler@2.4.2: + dependencies: + domelementtype: 1.3.1 + domhandler@4.3.1: dependencies: domelementtype: 2.3.0 @@ -9895,6 +11666,11 @@ snapshots: dependencies: domelementtype: 2.3.0 + domutils@1.7.0: + dependencies: + dom-serializer: 0.2.2 + domelementtype: 1.3.1 + domutils@2.8.0: dependencies: dom-serializer: 1.4.1 @@ -9912,6 +11688,10 @@ snapshots: no-case: 3.0.4 tslib: 2.8.1 + dot-prop@5.3.0: + dependencies: + is-obj: 2.0.0 + dot-prop@6.0.1: dependencies: is-obj: 2.0.0 @@ -9932,6 +11712,8 @@ snapshots: emoji-regex@10.4.0: {} + emoji-regex@7.0.3: {} + emoji-regex@8.0.0: {} emoji-regex@9.2.2: {} @@ -9951,6 +11733,8 @@ snapshots: graceful-fs: 4.2.11 tapable: 2.2.1 + entities@1.1.2: {} + entities@2.2.0: {} entities@4.5.0: {} @@ -9963,6 +11747,10 @@ snapshots: dependencies: is-arrayish: 0.2.1 + error-stack-parser@2.1.4: + dependencies: + stackframe: 1.3.4 + es-abstract@1.23.9: dependencies: array-buffer-byte-length: 1.0.2 @@ -10384,6 +12172,22 @@ snapshots: signal-exit: 4.1.0 strip-final-newline: 3.0.0 + execall@1.0.0: + dependencies: + clone-regexp: 1.0.1 + + expand-brackets@2.1.4: + dependencies: + debug: 2.6.9 + define-property: 0.2.5 + extend-shallow: 2.0.1 + posix-character-classes: 0.1.1 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + express@4.21.2: dependencies: accepts: 1.3.8 @@ -10424,12 +12228,41 @@ snapshots: dependencies: is-extendable: 0.1.1 + extend-shallow@3.0.2: + dependencies: + assign-symbols: 1.0.0 + is-extendable: 1.0.1 + extend@3.0.2: {} + extglob@2.0.4: + dependencies: + array-unique: 0.3.2 + define-property: 1.0.0 + expand-brackets: 2.1.4 + extend-shallow: 2.0.1 + fragment-cache: 0.2.1 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + fast-deep-equal@3.1.3: {} fast-diff@1.3.0: {} + fast-glob@2.2.7: + dependencies: + '@mrmlnc/readdir-enhanced': 2.2.1 + '@nodelib/fs.stat': 1.1.3 + glob-parent: 3.1.0 + is-glob: 4.0.3 + merge2: 1.4.1 + micromatch: 3.1.10 + transitivePeerDependencies: + - supports-color + fast-glob@3.3.3: dependencies: '@nodelib/fs.stat': 2.0.5 @@ -10442,10 +12275,14 @@ snapshots: fast-levenshtein@2.0.6: {} + fast-shallow-equal@1.0.0: {} + fast-uri@3.0.6: {} fastest-levenshtein@1.0.16: {} + fastest-stable-stringify@2.0.2: {} + fastq@1.19.0: dependencies: reusify: 1.0.4 @@ -10474,6 +12311,10 @@ snapshots: dependencies: flat-cache: 6.1.6 + file-entry-cache@4.0.0: + dependencies: + flat-cache: 2.0.1 + file-entry-cache@8.0.0: dependencies: flat-cache: 4.0.1 @@ -10486,6 +12327,13 @@ snapshots: filesize@8.0.7: {} + fill-range@4.0.0: + dependencies: + extend-shallow: 2.0.1 + is-number: 3.0.0 + repeat-string: 1.6.1 + to-regex-range: 2.1.1 + fill-range@7.1.1: dependencies: to-regex-range: 5.0.1 @@ -10509,6 +12357,10 @@ snapshots: find-up-simple@1.0.0: {} + find-up@2.1.0: + dependencies: + locate-path: 2.0.0 + find-up@3.0.0: dependencies: locate-path: 3.0.0 @@ -10523,6 +12375,12 @@ snapshots: locate-path: 7.2.0 path-exists: 5.0.0 + flat-cache@2.0.1: + dependencies: + flatted: 2.0.2 + rimraf: 2.6.3 + write: 1.0.3 + flat-cache@4.0.1: dependencies: flatted: 3.3.3 @@ -10536,6 +12394,8 @@ snapshots: flat@5.0.2: {} + flatted@2.0.2: {} + flatted@3.3.3: {} follow-redirects@1.15.9: {} @@ -10544,6 +12404,8 @@ snapshots: dependencies: is-callable: 1.2.7 + for-in@1.0.2: {} + fork-ts-checker-webpack-plugin@6.5.3(eslint@9.21.0(jiti@1.21.7))(typescript@5.7.3)(webpack@5.97.1): dependencies: '@babel/code-frame': 7.26.2 @@ -10572,6 +12434,10 @@ snapshots: fraction.js@4.3.7: {} + fragment-cache@0.2.1: + dependencies: + map-cache: 0.2.2 + fresh@0.5.2: {} fs-extra@11.3.0: @@ -10636,6 +12502,8 @@ snapshots: hasown: 2.0.2 math-intrinsics: 1.1.0 + get-nonce@1.0.1: {} + get-own-enumerable-property-symbols@3.0.2: {} get-proto@1.0.1: @@ -10643,6 +12511,8 @@ snapshots: dunder-proto: 1.0.1 es-object-atoms: 1.1.1 + get-stdin@6.0.0: {} + get-stream@6.0.1: {} get-stream@8.0.1: {} @@ -10657,8 +12527,15 @@ snapshots: dependencies: resolve-pkg-maps: 1.0.0 + get-value@2.0.6: {} + github-slugger@1.5.0: {} + glob-parent@3.1.0: + dependencies: + is-glob: 3.1.0 + path-dirname: 1.0.2 + glob-parent@5.1.2: dependencies: is-glob: 4.0.3 @@ -10667,6 +12544,8 @@ snapshots: dependencies: is-glob: 4.0.3 + glob-to-regexp@0.3.0: {} + glob-to-regexp@0.4.1: {} glob@7.2.3: @@ -10720,8 +12599,25 @@ snapshots: merge2: 1.4.1 slash: 4.0.0 + globby@9.2.0: + dependencies: + '@types/glob': 7.2.0 + array-union: 1.0.2 + dir-glob: 2.2.2 + fast-glob: 2.2.7 + glob: 7.2.3 + ignore: 4.0.6 + pify: 4.0.1 + slash: 2.0.0 + transitivePeerDependencies: + - supports-color + globjoin@0.1.4: {} + gonzales-pe@4.3.0: + dependencies: + minimist: 1.2.8 + gopd@1.2.0: {} got@12.6.1: @@ -10759,6 +12655,8 @@ snapshots: has-bigints@1.1.0: {} + has-flag@3.0.0: {} + has-flag@4.0.0: {} has-property-descriptors@1.0.2: @@ -10777,6 +12675,25 @@ snapshots: has-unicode@2.0.1: {} + has-value@0.3.1: + dependencies: + get-value: 2.0.6 + has-values: 0.1.4 + isobject: 2.1.0 + + has-value@1.0.0: + dependencies: + get-value: 2.0.6 + has-values: 1.0.0 + isobject: 3.0.1 + + has-values@0.1.4: {} + + has-values@1.0.0: + dependencies: + is-number: 3.0.0 + kind-of: 4.0.0 + has-yarn@3.0.0: {} hasown@2.0.2: @@ -10949,6 +12866,8 @@ snapshots: hookified@1.7.1: {} + hosted-git-info@2.8.9: {} + hosted-git-info@7.0.2: dependencies: lru-cache: 10.4.3 @@ -10984,6 +12903,8 @@ snapshots: relateurl: 0.2.7 terser: 5.38.2 + html-tags@2.0.0: {} + html-tags@3.3.1: {} html-void-elements@3.0.0: {} @@ -10998,6 +12919,15 @@ snapshots: optionalDependencies: webpack: 5.97.1 + htmlparser2@3.10.1: + dependencies: + domelementtype: 1.3.1 + domhandler: 2.4.2 + domutils: 1.7.0 + entities: 1.1.2 + inherits: 2.0.4 + readable-stream: 3.6.2 + htmlparser2@6.1.0: dependencies: domelementtype: 2.3.0 @@ -11064,6 +12994,8 @@ snapshots: husky@9.1.7: {} + hyphenate-style-name@1.1.0: {} + iconv-lite@0.4.24: dependencies: safer-buffer: 2.1.2 @@ -11074,6 +13006,8 @@ snapshots: ieee754@1.2.1: {} + ignore@4.0.6: {} + ignore@5.3.2: {} ignore@7.0.3: {} @@ -11086,21 +13020,32 @@ snapshots: immer@9.0.21: {} + import-fresh@2.0.0: + dependencies: + caller-path: 2.0.0 + resolve-from: 3.0.0 + import-fresh@3.3.1: dependencies: parent-module: 1.0.1 resolve-from: 4.0.0 + import-lazy@3.1.0: {} + import-lazy@4.0.0: {} imurmurhash@0.1.4: {} + indent-string@3.2.0: {} + indent-string@4.0.0: {} indent-string@5.0.0: {} index-to-position@0.1.2: {} + indexes-of@1.0.1: {} + infima@0.2.0-alpha.45: {} inflight@1.0.6: @@ -11118,6 +13063,10 @@ snapshots: inline-style-parser@0.2.4: {} + inline-style-prefixer@7.0.1: + dependencies: + css-in-js-utils: 3.1.0 + internal-slot@1.1.0: dependencies: es-errors: 1.3.0 @@ -11134,8 +13083,21 @@ snapshots: ipaddr.js@2.2.0: {} + is-accessor-descriptor@1.0.1: + dependencies: + hasown: 2.0.2 + + is-alphabetical@1.0.4: {} + is-alphabetical@2.0.1: {} + is-alphanumeric@1.0.0: {} + + is-alphanumerical@1.0.4: + dependencies: + is-alphabetical: 1.0.4 + is-decimal: 1.0.4 + is-alphanumerical@2.0.1: dependencies: is-alphabetical: 2.0.1 @@ -11170,6 +13132,8 @@ snapshots: call-bound: 1.0.3 has-tostringtag: 1.0.2 + is-buffer@1.1.6: {} + is-buffer@2.0.5: {} is-builtin-module@4.0.0: @@ -11190,6 +13154,10 @@ snapshots: dependencies: hasown: 2.0.2 + is-data-descriptor@1.0.1: + dependencies: + hasown: 2.0.2 + is-data-view@1.0.2: dependencies: call-bound: 1.0.3 @@ -11201,18 +13169,38 @@ snapshots: call-bound: 1.0.3 has-tostringtag: 1.0.2 + is-decimal@1.0.4: {} + is-decimal@2.0.1: {} + is-descriptor@0.1.7: + dependencies: + is-accessor-descriptor: 1.0.1 + is-data-descriptor: 1.0.1 + + is-descriptor@1.0.3: + dependencies: + is-accessor-descriptor: 1.0.1 + is-data-descriptor: 1.0.1 + + is-directory@0.3.1: {} + is-docker@2.2.1: {} is-extendable@0.1.1: {} + is-extendable@1.0.1: + dependencies: + is-plain-object: 2.0.4 + is-extglob@2.1.1: {} is-finalizationregistry@1.1.1: dependencies: call-bound: 1.0.3 + is-fullwidth-code-point@2.0.0: {} + is-fullwidth-code-point@3.0.0: {} is-fullwidth-code-point@4.0.0: {} @@ -11228,10 +13216,16 @@ snapshots: has-tostringtag: 1.0.2 safe-regex-test: 1.1.0 + is-glob@3.1.0: + dependencies: + is-extglob: 2.1.1 + is-glob@4.0.3: dependencies: is-extglob: 2.1.1 + is-hexadecimal@1.0.4: {} + is-hexadecimal@2.0.1: {} is-installed-globally@0.4.0: @@ -11248,6 +13242,10 @@ snapshots: call-bound: 1.0.3 has-tostringtag: 1.0.2 + is-number@3.0.0: + dependencies: + kind-of: 3.2.2 + is-number@7.0.0: {} is-obj@1.0.1: {} @@ -11258,6 +13256,8 @@ snapshots: is-path-inside@3.0.3: {} + is-plain-obj@1.1.0: {} + is-plain-obj@2.1.0: {} is-plain-obj@3.0.0: {} @@ -11296,6 +13296,8 @@ snapshots: call-bound: 1.0.3 has-tostringtag: 1.0.2 + is-supported-regexp-flag@1.0.1: {} + is-symbol@1.1.1: dependencies: call-bound: 1.0.3 @@ -11319,6 +13321,12 @@ snapshots: call-bound: 1.0.3 get-intrinsic: 1.2.7 + is-whitespace-character@1.0.4: {} + + is-windows@1.0.2: {} + + is-word-character@1.0.4: {} + is-wsl@2.2.0: dependencies: is-docker: 2.2.1 @@ -11333,6 +13341,10 @@ snapshots: isexe@2.0.0: {} + isobject@2.1.0: + dependencies: + isarray: 1.0.0 + isobject@3.0.1: {} iterator.prototype@1.1.5: @@ -11376,6 +13388,8 @@ snapshots: '@sideway/formula': 3.0.1 '@sideway/pinpoint': 2.0.0 + js-cookie@2.2.1: {} + js-tokens@4.0.0: {} js-yaml@3.14.1: @@ -11393,6 +13407,8 @@ snapshots: json-buffer@3.0.1: {} + json-parse-better-errors@1.0.2: {} + json-parse-even-better-errors@2.3.1: {} json-schema-traverse@0.4.1: {} @@ -11428,10 +13444,20 @@ snapshots: dependencies: '@keyv/serialize': 1.0.3 + kind-of@3.2.2: + dependencies: + is-buffer: 1.1.6 + + kind-of@4.0.0: + dependencies: + is-buffer: 1.1.6 + kind-of@6.0.3: {} kleur@3.0.3: {} + known-css-properties@0.11.0: {} + known-css-properties@0.35.0: {} language-subtag-registry@0.3.23: {} @@ -11449,6 +13475,8 @@ snapshots: picocolors: 1.1.1 shell-quote: 1.8.2 + leven@2.1.0: {} + leven@3.1.0: {} levn@0.4.1: @@ -11484,6 +13512,13 @@ snapshots: rfdc: 1.4.1 wrap-ansi: 9.0.0 + load-json-file@4.0.0: + dependencies: + graceful-fs: 4.2.11 + parse-json: 4.0.0 + pify: 3.0.0 + strip-bom: 3.0.0 + loader-runner@4.3.0: {} loader-utils@2.0.4: @@ -11494,6 +13529,11 @@ snapshots: loader-utils@3.3.1: {} + locate-path@2.0.0: + dependencies: + p-locate: 2.0.0 + path-exists: 3.0.0 + locate-path@3.0.0: dependencies: p-locate: 3.0.0 @@ -11519,6 +13559,10 @@ snapshots: lodash@4.17.21: {} + log-symbols@2.2.0: + dependencies: + chalk: 2.4.2 + log-update@6.1.0: dependencies: ansi-escapes: 7.0.0 @@ -11527,12 +13571,19 @@ snapshots: strip-ansi: 7.1.0 wrap-ansi: 9.0.0 + longest-streak@2.0.4: {} + longest-streak@3.1.0: {} loose-envify@1.4.0: dependencies: js-tokens: 4.0.0 + loud-rejection@1.6.0: + dependencies: + currently-unhandled: 0.4.1 + signal-exit: 3.0.7 + lower-case@2.0.2: dependencies: tslib: 2.8.1 @@ -11545,14 +13596,32 @@ snapshots: dependencies: yallist: 3.1.1 + lucide-react@0.487.0(react@19.0.0): + dependencies: + react: 19.0.0 + lunr-languages@1.14.0: {} lunr@2.3.9: {} + map-cache@0.2.2: {} + + map-obj@1.0.1: {} + + map-obj@2.0.0: {} + + map-visit@1.0.0: + dependencies: + object-visit: 1.0.1 + mark.js@8.11.1: {} + markdown-escapes@1.0.4: {} + markdown-extensions@2.0.0: {} + markdown-table@1.1.3: {} + markdown-table@2.0.0: dependencies: repeat-string: 1.6.1 @@ -11563,6 +13632,10 @@ snapshots: mathml-tag-names@2.1.3: {} + mdast-util-compact@1.0.4: + dependencies: + unist-util-visit: 1.4.1 + mdast-util-directive@3.1.0: dependencies: '@types/mdast': 4.0.4 @@ -11751,6 +13824,8 @@ snapshots: dependencies: '@types/mdast': 4.0.4 + mdn-data@2.0.14: {} + mdn-data@2.0.28: {} mdn-data@2.0.30: {} @@ -11765,6 +13840,18 @@ snapshots: meow@13.2.0: {} + meow@5.0.0: + dependencies: + camelcase-keys: 4.2.0 + decamelize-keys: 1.1.1 + loud-rejection: 1.6.0 + minimist-options: 3.0.2 + normalize-package-data: 2.5.0 + read-pkg-up: 3.0.0 + redent: 2.0.0 + trim-newlines: 2.0.0 + yargs-parser: 10.1.0 + merge-descriptors@1.0.3: {} merge-stream@2.0.0: {} @@ -12070,6 +14157,24 @@ snapshots: transitivePeerDependencies: - supports-color + micromatch@3.1.10: + dependencies: + arr-diff: 4.0.0 + array-unique: 0.3.2 + braces: 2.3.2 + define-property: 2.0.2 + extend-shallow: 3.0.2 + extglob: 2.0.4 + fragment-cache: 0.2.1 + kind-of: 6.0.3 + nanomatch: 1.2.13 + object.pick: 1.3.0 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + micromatch@4.0.8: dependencies: braces: 3.0.3 @@ -12119,10 +14224,24 @@ snapshots: dependencies: brace-expansion: 2.0.1 + minimist-options@3.0.2: + dependencies: + arrify: 1.0.1 + is-plain-obj: 1.1.0 + minimist@1.2.8: {} + mixin-deep@1.3.2: + dependencies: + for-in: 1.0.2 + is-extendable: 1.0.1 + mkdirp@0.3.0: {} + mkdirp@0.5.6: + dependencies: + minimist: 1.2.8 + mrmime@2.0.0: {} ms@2.0.0: {} @@ -12134,8 +14253,37 @@ snapshots: dns-packet: 5.6.1 thunky: 1.1.0 + nano-css@5.6.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + css-tree: 1.1.3 + csstype: 3.1.3 + fastest-stable-stringify: 2.0.2 + inline-style-prefixer: 7.0.1 + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + rtl-css-js: 1.16.1 + stacktrace-js: 2.0.2 + stylis: 4.3.6 + nanoid@3.3.8: {} + nanomatch@1.2.13: + dependencies: + arr-diff: 4.0.0 + array-unique: 0.3.2 + define-property: 2.0.2 + extend-shallow: 3.0.2 + fragment-cache: 0.2.1 + is-windows: 1.0.2 + kind-of: 6.0.3 + object.pick: 1.3.0 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + natural-compare@1.4.0: {} negotiator@0.6.3: {} @@ -12164,6 +14312,13 @@ snapshots: dependencies: abbrev: 1.1.1 + normalize-package-data@2.5.0: + dependencies: + hosted-git-info: 2.8.9 + resolve: 1.22.10 + semver: 5.7.2 + validate-npm-package-license: 3.0.4 + normalize-package-data@6.0.2: dependencies: hosted-git-info: 7.0.2 @@ -12174,6 +14329,8 @@ snapshots: normalize-range@0.1.2: {} + normalize-selector@0.2.0: {} + normalize-url@8.0.1: {} not@0.1.0: {} @@ -12198,12 +14355,24 @@ snapshots: schema-utils: 3.3.0 webpack: 5.97.1 + num2fraction@1.2.2: {} + object-assign@4.1.1: {} + object-copy@0.1.0: + dependencies: + copy-descriptor: 0.1.1 + define-property: 0.2.5 + kind-of: 3.2.2 + object-inspect@1.13.4: {} object-keys@1.1.1: {} + object-visit@1.0.1: + dependencies: + isobject: 3.0.1 + object.assign@4.1.7: dependencies: call-bind: 1.0.8 @@ -12232,6 +14401,10 @@ snapshots: define-properties: 1.2.1 es-abstract: 1.23.9 + object.pick@1.3.0: + dependencies: + isobject: 3.0.1 + object.values@1.2.1: dependencies: call-bind: 1.0.8 @@ -12288,6 +14461,10 @@ snapshots: p-cancelable@3.0.0: {} + p-limit@1.3.0: + dependencies: + p-try: 1.0.0 + p-limit@2.3.0: dependencies: p-try: 2.2.0 @@ -12300,6 +14477,10 @@ snapshots: dependencies: yocto-queue: 1.1.1 + p-locate@2.0.0: + dependencies: + p-limit: 1.3.0 + p-locate@3.0.0: dependencies: p-limit: 2.3.0 @@ -12321,6 +14502,8 @@ snapshots: '@types/retry': 0.12.0 retry: 0.13.1 + p-try@1.0.0: {} + p-try@2.2.0: {} package-json@8.1.1: @@ -12337,7 +14520,16 @@ snapshots: parent-module@1.0.1: dependencies: - callsites: 3.1.0 + callsites: 3.1.0 + + parse-entities@1.2.2: + dependencies: + character-entities: 1.2.4 + character-entities-legacy: 1.1.4 + character-reference-invalid: 1.1.4 + is-alphanumerical: 1.0.4 + is-decimal: 1.0.4 + is-hexadecimal: 1.0.4 parse-entities@4.0.2: dependencies: @@ -12349,6 +14541,11 @@ snapshots: is-decimal: 2.0.1 is-hexadecimal: 2.0.1 + parse-json@4.0.0: + dependencies: + error-ex: 1.3.2 + json-parse-better-errors: 1.0.2 + parse-json@5.2.0: dependencies: '@babel/code-frame': 7.26.2 @@ -12382,6 +14579,10 @@ snapshots: no-case: 3.0.4 tslib: 2.8.1 + pascalcase@0.1.1: {} + + path-dirname@1.0.2: {} + path-exists@3.0.0: {} path-exists@4.0.0: {} @@ -12406,8 +14607,14 @@ snapshots: path-to-regexp@3.3.0: {} + path-type@3.0.0: + dependencies: + pify: 3.0.0 + path-type@4.0.0: {} + picocolors@0.2.1: {} + picocolors@1.1.1: {} picomatch@2.3.1: {} @@ -12416,6 +14623,10 @@ snapshots: pidtree@0.6.0: {} + pify@3.0.0: {} + + pify@4.0.1: {} + pkg-dir@7.0.0: dependencies: find-up: 6.3.0 @@ -12426,6 +14637,8 @@ snapshots: pluralize@8.0.0: {} + posix-character-classes@0.1.1: {} + possible-typed-array-names@1.1.0: {} postcss-attribute-case-insensitive@7.0.1(postcss@8.5.2): @@ -12555,12 +14768,26 @@ snapshots: dependencies: postcss: 8.5.2 + postcss-html@0.36.0(postcss-syntax@0.36.2(postcss@8.5.2))(postcss@7.0.39): + dependencies: + htmlparser2: 3.10.1 + postcss: 7.0.39 + postcss-syntax: 0.36.2(postcss-html@0.36.0(postcss-syntax@0.36.2(postcss@8.5.2))(postcss@7.0.39))(postcss-jsx@0.36.4(postcss-syntax@0.36.2(postcss@8.5.2))(postcss@7.0.39))(postcss-less@3.1.4)(postcss-markdown@0.36.0(postcss-syntax@0.36.2(postcss@8.5.2))(postcss@7.0.39))(postcss-scss@2.1.1)(postcss@7.0.39) + postcss-image-set-function@7.0.0(postcss@8.5.2): dependencies: '@csstools/utilities': 2.0.0(postcss@8.5.2) postcss: 8.5.2 postcss-value-parser: 4.2.0 + postcss-jsx@0.36.4(postcss-syntax@0.36.2(postcss@8.5.2))(postcss@7.0.39): + dependencies: + '@babel/core': 7.26.8 + postcss: 7.0.39 + postcss-syntax: 0.36.2(postcss-html@0.36.0(postcss-syntax@0.36.2(postcss@8.5.2))(postcss@7.0.39))(postcss-jsx@0.36.4(postcss-syntax@0.36.2(postcss@8.5.2))(postcss@7.0.39))(postcss-less@3.1.4)(postcss-markdown@0.36.0(postcss-syntax@0.36.2(postcss@8.5.2))(postcss@7.0.39))(postcss-scss@2.1.1)(postcss@7.0.39) + transitivePeerDependencies: + - supports-color + postcss-lab-function@7.0.7(postcss@8.5.2): dependencies: '@csstools/css-color-parser': 3.0.7(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) @@ -12570,6 +14797,10 @@ snapshots: '@csstools/utilities': 2.0.0(postcss@8.5.2) postcss: 8.5.2 + postcss-less@3.1.4: + dependencies: + postcss: 7.0.39 + postcss-loader@7.3.4(postcss@8.5.2)(typescript@5.7.3)(webpack@5.97.1): dependencies: cosmiconfig: 8.3.6(typescript@5.7.3) @@ -12585,6 +14816,15 @@ snapshots: postcss: 8.5.2 postcss-value-parser: 4.2.0 + postcss-markdown@0.36.0(postcss-syntax@0.36.2(postcss@8.5.2))(postcss@7.0.39): + dependencies: + postcss: 7.0.39 + postcss-syntax: 0.36.2(postcss-html@0.36.0(postcss-syntax@0.36.2(postcss@8.5.2))(postcss@7.0.39))(postcss-jsx@0.36.4(postcss-syntax@0.36.2(postcss@8.5.2))(postcss@7.0.39))(postcss-less@3.1.4)(postcss-markdown@0.36.0(postcss-syntax@0.36.2(postcss@8.5.2))(postcss@7.0.39))(postcss-scss@2.1.1)(postcss@7.0.39) + remark: 10.0.1 + unist-util-find-all-after: 1.0.5 + + postcss-media-query-parser@0.2.3: {} + postcss-merge-idents@6.0.3(postcss@8.5.2): dependencies: cssnano-utils: 4.0.2(postcss@8.5.2) @@ -12818,17 +15058,43 @@ snapshots: dependencies: postcss: 8.5.2 + postcss-reporter@6.0.1: + dependencies: + chalk: 2.4.2 + lodash: 4.17.21 + log-symbols: 2.2.0 + postcss: 7.0.39 + postcss-resolve-nested-selector@0.1.6: {} + postcss-safe-parser@4.0.2: + dependencies: + postcss: 7.0.39 + postcss-safe-parser@7.0.1(postcss@8.5.2): dependencies: postcss: 8.5.2 + postcss-sass@0.3.5: + dependencies: + gonzales-pe: 4.3.0 + postcss: 7.0.39 + + postcss-scss@2.1.1: + dependencies: + postcss: 7.0.39 + postcss-selector-not@8.0.1(postcss@8.5.2): dependencies: postcss: 8.5.2 postcss-selector-parser: 7.1.0 + postcss-selector-parser@3.1.2: + dependencies: + dot-prop: 5.3.0 + indexes-of: 1.0.1 + uniq: 1.0.1 + postcss-selector-parser@6.1.2: dependencies: cssesc: 3.0.0 @@ -12844,23 +15110,49 @@ snapshots: postcss: 8.5.2 sort-css-media-queries: 2.2.0 + postcss-sorting@4.1.0: + dependencies: + lodash: 4.17.21 + postcss: 7.0.39 + + postcss-sorting@8.0.2(postcss@8.5.2): + dependencies: + postcss: 8.5.2 + postcss-svgo@6.0.3(postcss@8.5.2): dependencies: postcss: 8.5.2 postcss-value-parser: 4.2.0 svgo: 3.3.2 + postcss-syntax@0.36.2(postcss-html@0.36.0(postcss-syntax@0.36.2(postcss@8.5.2))(postcss@7.0.39))(postcss-jsx@0.36.4(postcss-syntax@0.36.2(postcss@8.5.2))(postcss@7.0.39))(postcss-less@3.1.4)(postcss-markdown@0.36.0(postcss-syntax@0.36.2(postcss@8.5.2))(postcss@7.0.39))(postcss-scss@2.1.1)(postcss@7.0.39): + dependencies: + postcss: 7.0.39 + optionalDependencies: + postcss-html: 0.36.0(postcss-syntax@0.36.2(postcss@8.5.2))(postcss@7.0.39) + postcss-jsx: 0.36.4(postcss-syntax@0.36.2(postcss@8.5.2))(postcss@7.0.39) + postcss-less: 3.1.4 + postcss-markdown: 0.36.0(postcss-syntax@0.36.2(postcss@8.5.2))(postcss@7.0.39) + postcss-scss: 2.1.1 + postcss-unique-selectors@6.0.4(postcss@8.5.2): dependencies: postcss: 8.5.2 postcss-selector-parser: 6.1.2 + postcss-value-parser@3.3.1: {} + postcss-value-parser@4.2.0: {} postcss-zindex@6.0.2(postcss@8.5.2): dependencies: postcss: 8.5.2 + postcss@7.0.39: + dependencies: + picocolors: 0.2.1 + source-map: 0.6.1 + postcss@8.5.2: dependencies: nanoid: 3.3.8 @@ -12941,6 +15233,8 @@ snapshots: dependencies: inherits: 2.0.4 + quick-lru@1.1.0: {} + quick-lru@5.1.1: {} randombytes@2.1.0: @@ -13020,6 +15314,25 @@ snapshots: react-loadable: '@docusaurus/react-loadable@6.0.0(react@19.0.0)' webpack: 5.97.1 + react-remove-scroll-bar@2.3.8(@types/react@19.0.10)(react@19.0.0): + dependencies: + react: 19.0.0 + react-style-singleton: 2.2.3(@types/react@19.0.10)(react@19.0.0) + tslib: 2.8.1 + optionalDependencies: + '@types/react': 19.0.10 + + react-remove-scroll@2.6.3(@types/react@19.0.10)(react@19.0.0): + dependencies: + react: 19.0.0 + react-remove-scroll-bar: 2.3.8(@types/react@19.0.10)(react@19.0.0) + react-style-singleton: 2.2.3(@types/react@19.0.10)(react@19.0.0) + tslib: 2.8.1 + use-callback-ref: 1.3.3(@types/react@19.0.10)(react@19.0.0) + use-sidecar: 1.1.3(@types/react@19.0.10)(react@19.0.0) + optionalDependencies: + '@types/react': 19.0.10 + react-router-config@5.1.1(react-router@5.3.4(react@19.0.0))(react@19.0.0): dependencies: '@babel/runtime': 7.26.7 @@ -13050,6 +15363,38 @@ snapshots: tiny-invariant: 1.3.3 tiny-warning: 1.0.3 + react-style-singleton@2.2.3(@types/react@19.0.10)(react@19.0.0): + dependencies: + get-nonce: 1.0.1 + react: 19.0.0 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 19.0.10 + + react-universal-interface@0.6.2(react@19.0.0)(tslib@2.8.1): + dependencies: + react: 19.0.0 + tslib: 2.8.1 + + react-use@17.6.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + dependencies: + '@types/js-cookie': 2.2.7 + '@xobotyi/scrollbar-width': 1.9.5 + copy-to-clipboard: 3.3.3 + fast-deep-equal: 3.1.3 + fast-shallow-equal: 1.0.0 + js-cookie: 2.2.1 + nano-css: 5.6.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + react-universal-interface: 0.6.2(react@19.0.0)(tslib@2.8.1) + resize-observer-polyfill: 1.5.1 + screenfull: 5.2.0 + set-harmonic-interval: 1.0.1 + throttle-debounce: 3.0.1 + ts-easing: 0.2.0 + tslib: 2.8.1 + react@19.0.0: {} read-package-up@11.0.0: @@ -13058,6 +15403,17 @@ snapshots: read-pkg: 9.0.1 type-fest: 4.35.0 + read-pkg-up@3.0.0: + dependencies: + find-up: 2.1.0 + read-pkg: 3.0.0 + + read-pkg@3.0.0: + dependencies: + load-json-file: 4.0.0 + normalize-package-data: 2.5.0 + path-type: 3.0.0 + read-pkg@9.0.1: dependencies: '@types/normalize-package-data': 2.4.4 @@ -13126,6 +15482,11 @@ snapshots: dependencies: minimatch: 3.1.2 + redent@2.0.0: + dependencies: + indent-string: 3.2.0 + strip-indent: 2.0.0 + reflect.getprototypeof@1.0.10: dependencies: call-bind: 1.0.8 @@ -13149,6 +15510,11 @@ snapshots: dependencies: '@babel/runtime': 7.26.7 + regex-not@1.0.2: + dependencies: + extend-shallow: 3.0.2 + safe-regex: 1.1.0 + regexp-tree@0.1.27: {} regexp.prototype.flags@1.5.4: @@ -13257,6 +15623,24 @@ snapshots: transitivePeerDependencies: - supports-color + remark-parse@6.0.3: + dependencies: + collapse-white-space: 1.0.6 + is-alphabetical: 1.0.4 + is-decimal: 1.0.4 + is-whitespace-character: 1.0.4 + is-word-character: 1.0.4 + markdown-escapes: 1.0.4 + parse-entities: 1.2.2 + repeat-string: 1.6.1 + state-toggle: 1.0.3 + trim: 0.0.1 + trim-trailing-lines: 1.1.4 + unherit: 1.1.3 + unist-util-remove-position: 1.1.4 + vfile-location: 2.0.6 + xtend: 4.0.2 + remark-rehype@11.1.1: dependencies: '@types/hast': 3.0.4 @@ -13271,6 +15655,29 @@ snapshots: mdast-util-to-markdown: 2.1.2 unified: 11.0.5 + remark-stringify@6.0.4: + dependencies: + ccount: 1.1.0 + is-alphanumeric: 1.0.0 + is-decimal: 1.0.4 + is-whitespace-character: 1.0.4 + longest-streak: 2.0.4 + markdown-escapes: 1.0.4 + markdown-table: 1.1.3 + mdast-util-compact: 1.0.4 + parse-entities: 1.2.2 + repeat-string: 1.6.1 + state-toggle: 1.0.3 + stringify-entities: 1.3.2 + unherit: 1.1.3 + xtend: 4.0.2 + + remark@10.0.1: + dependencies: + remark-parse: 6.0.3 + remark-stringify: 6.0.4 + unified: 7.1.0 + renderkid@3.0.0: dependencies: css-select: 4.3.0 @@ -13279,16 +15686,24 @@ snapshots: lodash: 4.17.21 strip-ansi: 6.0.1 + repeat-element@1.1.4: {} + repeat-string@1.6.1: {} + replace-ext@1.0.0: {} + require-from-string@2.0.2: {} require-like@0.1.2: {} requires-port@1.0.0: {} + resize-observer-polyfill@1.5.1: {} + resolve-alpn@1.2.1: {} + resolve-from@3.0.0: {} + resolve-from@4.0.0: {} resolve-from@5.0.0: {} @@ -13297,6 +15712,8 @@ snapshots: resolve-pkg-maps@1.0.0: {} + resolve-url@0.2.1: {} + resolve@1.22.10: dependencies: is-core-module: 2.16.1 @@ -13318,16 +15735,26 @@ snapshots: onetime: 7.0.0 signal-exit: 4.1.0 + ret@0.1.15: {} + retry@0.13.1: {} reusify@1.0.4: {} rfdc@1.4.1: {} + rimraf@2.6.3: + dependencies: + glob: 7.2.3 + rimraf@3.0.2: dependencies: glob: 7.2.3 + rtl-css-js@1.16.1: + dependencies: + '@babel/runtime': 7.26.7 + rtlcss@4.3.0: dependencies: escalade: 3.2.0 @@ -13362,6 +15789,10 @@ snapshots: es-errors: 1.3.0 is-regex: 1.2.1 + safe-regex@1.1.0: + dependencies: + ret: 0.1.15 + safer-buffer@2.1.2: {} sax@1.4.1: {} @@ -13387,6 +15818,8 @@ snapshots: ajv-formats: 2.1.1(ajv@8.17.1) ajv-keywords: 5.1.0(ajv@8.17.1) + screenfull@5.2.0: {} + search-insights@2.17.2: {} section-matter@1.0.0: @@ -13405,6 +15838,8 @@ snapshots: dependencies: semver: 7.7.1 + semver@5.7.2: {} + semver@6.3.1: {} semver@7.7.1: {} @@ -13478,12 +15913,21 @@ snapshots: functions-have-names: 1.2.3 has-property-descriptors: 1.0.2 + set-harmonic-interval@1.0.1: {} + set-proto@1.0.0: dependencies: dunder-proto: 1.0.1 es-errors: 1.3.0 es-object-atoms: 1.1.1 + set-value@2.0.1: + dependencies: + extend-shallow: 2.0.1 + is-extendable: 0.1.1 + is-plain-object: 2.0.4 + split-string: 3.1.0 + setprototypeof@1.1.0: {} setprototypeof@1.2.0: {} @@ -13559,10 +16003,18 @@ snapshots: dependencies: unicode-emoji-modifier-base: 1.0.0 + slash@2.0.0: {} + slash@3.0.0: {} slash@4.0.0: {} + slice-ansi@2.1.0: + dependencies: + ansi-styles: 3.2.1 + astral-regex: 1.0.0 + is-fullwidth-code-point: 2.0.0 + slice-ansi@4.0.0: dependencies: ansi-styles: 4.3.0 @@ -13584,6 +16036,29 @@ snapshots: dot-case: 3.0.4 tslib: 2.8.1 + snapdragon-node@2.1.1: + dependencies: + define-property: 1.0.0 + isobject: 3.0.1 + snapdragon-util: 3.0.1 + + snapdragon-util@3.0.1: + dependencies: + kind-of: 3.2.2 + + snapdragon@0.8.2: + dependencies: + base: 0.11.2 + debug: 2.6.9 + define-property: 0.2.5 + extend-shallow: 2.0.1 + map-cache: 0.2.2 + source-map: 0.5.6 + source-map-resolve: 0.5.3 + use: 3.1.1 + transitivePeerDependencies: + - supports-color + sockjs@0.3.24: dependencies: faye-websocket: 0.11.4 @@ -13594,11 +16069,23 @@ snapshots: source-map-js@1.2.1: {} + source-map-resolve@0.5.3: + dependencies: + atob: 2.1.2 + decode-uri-component: 0.2.2 + resolve-url: 0.2.1 + source-map-url: 0.4.1 + urix: 0.1.0 + source-map-support@0.5.21: dependencies: buffer-from: 1.1.2 source-map: 0.6.1 + source-map-url@0.4.1: {} + + source-map@0.5.6: {} + source-map@0.6.1: {} source-map@0.7.4: {} @@ -13642,12 +16129,42 @@ snapshots: transitivePeerDependencies: - supports-color + specificity@0.4.1: {} + + split-string@3.1.0: + dependencies: + extend-shallow: 3.0.2 + sprintf-js@1.0.3: {} srcset@4.0.0: {} stable-hash@0.0.4: {} + stack-generator@2.0.10: + dependencies: + stackframe: 1.3.4 + + stackframe@1.3.4: {} + + stacktrace-gps@3.1.2: + dependencies: + source-map: 0.5.6 + stackframe: 1.3.4 + + stacktrace-js@2.0.2: + dependencies: + error-stack-parser: 2.1.4 + stack-generator: 2.0.10 + stacktrace-gps: 3.1.2 + + state-toggle@1.0.3: {} + + static-extend@0.1.2: + dependencies: + define-property: 0.2.5 + object-copy: 0.1.0 + statuses@1.5.0: {} statuses@2.0.1: {} @@ -13656,6 +16173,12 @@ snapshots: string-argv@0.3.2: {} + string-width@3.1.0: + dependencies: + emoji-regex: 7.0.3 + is-fullwidth-code-point: 2.0.0 + strip-ansi: 5.2.0 + string-width@4.2.3: dependencies: emoji-regex: 8.0.0 @@ -13732,6 +16255,13 @@ snapshots: dependencies: safe-buffer: 5.2.1 + stringify-entities@1.3.2: + dependencies: + character-entities-html4: 1.1.4 + character-entities-legacy: 1.1.4 + is-alphanumerical: 1.0.4 + is-hexadecimal: 1.0.4 + stringify-entities@4.0.4: dependencies: character-entities-html4: 2.1.0 @@ -13743,6 +16273,10 @@ snapshots: is-obj: 1.0.1 is-regexp: 1.0.0 + strip-ansi@5.2.0: + dependencies: + ansi-regex: 4.1.1 + strip-ansi@6.0.1: dependencies: ansi-regex: 5.0.1 @@ -13759,6 +16293,8 @@ snapshots: strip-final-newline@3.0.0: {} + strip-indent@2.0.0: {} + strip-indent@4.0.0: dependencies: min-indent: 1.0.1 @@ -13767,6 +16303,8 @@ snapshots: strip-json-comments@3.1.1: {} + style-search@0.1.0: {} + style-to-object@1.0.8: dependencies: inline-style-parser: 0.2.4 @@ -13777,6 +16315,13 @@ snapshots: postcss: 8.5.2 postcss-selector-parser: 6.1.2 + stylelint-config-rational-order@0.1.2: + dependencies: + stylelint: 9.10.1 + stylelint-order: 2.2.1(stylelint@9.10.1) + transitivePeerDependencies: + - supports-color + stylelint-config-recommended@15.0.0(stylelint@16.14.1(typescript@5.7.3)): dependencies: stylelint: 16.14.1(typescript@5.7.3) @@ -13786,6 +16331,19 @@ snapshots: stylelint: 16.14.1(typescript@5.7.3) stylelint-config-recommended: 15.0.0(stylelint@16.14.1(typescript@5.7.3)) + stylelint-order@2.2.1(stylelint@9.10.1): + dependencies: + lodash: 4.17.21 + postcss: 7.0.39 + postcss-sorting: 4.1.0 + stylelint: 9.10.1 + + stylelint-order@6.0.4(stylelint@16.14.1(typescript@5.7.3)): + dependencies: + postcss: 8.5.2 + postcss-sorting: 8.0.2(postcss@8.5.2) + stylelint: 16.14.1(typescript@5.7.3) + stylelint@16.14.1(typescript@5.7.3): dependencies: '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) @@ -13830,6 +16388,68 @@ snapshots: - supports-color - typescript + stylelint@9.10.1: + dependencies: + autoprefixer: 9.8.8 + balanced-match: 1.0.2 + chalk: 2.4.2 + cosmiconfig: 5.2.1 + debug: 4.4.0 + execall: 1.0.0 + file-entry-cache: 4.0.0 + get-stdin: 6.0.0 + global-modules: 2.0.0 + globby: 9.2.0 + globjoin: 0.1.4 + html-tags: 2.0.0 + ignore: 5.3.2 + import-lazy: 3.1.0 + imurmurhash: 0.1.4 + known-css-properties: 0.11.0 + leven: 2.1.0 + lodash: 4.17.21 + log-symbols: 2.2.0 + mathml-tag-names: 2.1.3 + meow: 5.0.0 + micromatch: 3.1.10 + normalize-selector: 0.2.0 + pify: 4.0.1 + postcss: 7.0.39 + postcss-html: 0.36.0(postcss-syntax@0.36.2(postcss@8.5.2))(postcss@7.0.39) + postcss-jsx: 0.36.4(postcss-syntax@0.36.2(postcss@8.5.2))(postcss@7.0.39) + postcss-less: 3.1.4 + postcss-markdown: 0.36.0(postcss-syntax@0.36.2(postcss@8.5.2))(postcss@7.0.39) + postcss-media-query-parser: 0.2.3 + postcss-reporter: 6.0.1 + postcss-resolve-nested-selector: 0.1.6 + postcss-safe-parser: 4.0.2 + postcss-sass: 0.3.5 + postcss-scss: 2.1.1 + postcss-selector-parser: 3.1.2 + postcss-syntax: 0.36.2(postcss-html@0.36.0(postcss-syntax@0.36.2(postcss@8.5.2))(postcss@7.0.39))(postcss-jsx@0.36.4(postcss-syntax@0.36.2(postcss@8.5.2))(postcss@7.0.39))(postcss-less@3.1.4)(postcss-markdown@0.36.0(postcss-syntax@0.36.2(postcss@8.5.2))(postcss@7.0.39))(postcss-scss@2.1.1)(postcss@7.0.39) + postcss-value-parser: 3.3.1 + resolve-from: 4.0.0 + signal-exit: 3.0.7 + slash: 2.0.0 + specificity: 0.4.1 + string-width: 3.1.0 + style-search: 0.1.0 + sugarss: 2.0.0 + svg-tags: 1.0.0 + table: 5.4.6 + transitivePeerDependencies: + - supports-color + + stylis@4.3.6: {} + + sugarss@2.0.0: + dependencies: + postcss: 7.0.39 + + supports-color@5.5.0: + dependencies: + has-flag: 3.0.0 + supports-color@7.2.0: dependencies: has-flag: 4.0.0 @@ -13864,6 +16484,13 @@ snapshots: '@pkgr/core': 0.1.1 tslib: 2.8.1 + table@5.4.6: + dependencies: + ajv: 6.12.6 + lodash: 4.17.21 + slice-ansi: 2.1.0 + string-width: 3.1.0 + table@6.9.0: dependencies: ajv: 8.17.1 @@ -13894,6 +16521,8 @@ snapshots: text-table@0.2.0: {} + throttle-debounce@3.0.1: {} + thunky@1.1.0: {} tiny-invariant@1.3.3: {} @@ -13905,21 +16534,45 @@ snapshots: fdir: 6.4.3(picomatch@4.0.2) picomatch: 4.0.2 + to-object-path@0.3.0: + dependencies: + kind-of: 3.2.2 + + to-regex-range@2.1.1: + dependencies: + is-number: 3.0.0 + repeat-string: 1.6.1 + to-regex-range@5.0.1: dependencies: is-number: 7.0.0 + to-regex@3.0.2: + dependencies: + define-property: 2.0.2 + extend-shallow: 3.0.2 + regex-not: 1.0.2 + safe-regex: 1.1.0 + to-vfile@6.1.0: dependencies: is-buffer: 2.0.5 vfile: 4.2.1 + toggle-selection@1.0.6: {} + toidentifier@1.0.1: {} totalist@3.0.1: {} trim-lines@3.0.1: {} + trim-newlines@2.0.0: {} + + trim-trailing-lines@1.1.4: {} + + trim@0.0.1: {} + trough@1.0.5: {} trough@2.2.0: {} @@ -13928,6 +16581,8 @@ snapshots: dependencies: typescript: 5.7.3 + ts-easing@0.2.0: {} + tsconfig-paths@3.15.0: dependencies: '@types/json5': 0.0.29 @@ -14019,6 +16674,11 @@ snapshots: undici-types@6.20.0: {} + unherit@1.1.3: + dependencies: + inherits: 2.0.4 + xtend: 4.0.2 + unicode-canonical-property-names-ecmascript@2.0.1: {} unicode-emoji-modifier-base@1.0.0: {} @@ -14044,6 +16704,17 @@ snapshots: trough: 2.2.0 vfile: 6.0.3 + unified@7.1.0: + dependencies: + '@types/unist': 2.0.11 + '@types/vfile': 3.0.2 + bail: 1.0.5 + extend: 3.0.2 + is-plain-obj: 1.1.0 + trough: 1.0.5 + vfile: 3.0.1 + x-is-string: 0.1.0 + unified@9.2.2: dependencies: '@types/unist': 2.0.11 @@ -14054,6 +16725,15 @@ snapshots: trough: 1.0.5 vfile: 4.2.1 + union-value@1.0.1: + dependencies: + arr-union: 3.1.0 + get-value: 2.0.6 + is-extendable: 0.1.1 + set-value: 2.0.1 + + uniq@1.0.1: {} + unique-string@3.0.0: dependencies: crypto-random-string: 4.0.0 @@ -14062,6 +16742,12 @@ snapshots: dependencies: unist-util-is: 4.1.0 + unist-util-find-all-after@1.0.5: + dependencies: + unist-util-is: 3.0.0 + + unist-util-is@3.0.0: {} + unist-util-is@4.1.0: {} unist-util-is@6.0.0: @@ -14076,6 +16762,12 @@ snapshots: dependencies: '@types/unist': 3.0.3 + unist-util-remove-position@1.1.4: + dependencies: + unist-util-visit: 1.4.1 + + unist-util-stringify-position@1.1.2: {} + unist-util-stringify-position@2.0.3: dependencies: '@types/unist': 2.0.11 @@ -14084,6 +16776,10 @@ snapshots: dependencies: '@types/unist': 3.0.3 + unist-util-visit-parents@2.1.2: + dependencies: + unist-util-is: 3.0.0 + unist-util-visit-parents@3.1.1: dependencies: '@types/unist': 2.0.11 @@ -14094,6 +16790,10 @@ snapshots: '@types/unist': 3.0.3 unist-util-is: 6.0.0 + unist-util-visit@1.4.1: + dependencies: + unist-util-visit-parents: 2.1.2 + unist-util-visit@2.0.3: dependencies: '@types/unist': 2.0.11 @@ -14110,6 +16810,11 @@ snapshots: unpipe@1.0.0: {} + unset-value@1.0.0: + dependencies: + has-value: 0.3.1 + isobject: 3.0.1 + update-browserslist-db@1.1.2(browserslist@4.24.4): dependencies: browserslist: 4.24.4 @@ -14137,6 +16842,8 @@ snapshots: dependencies: punycode: 2.3.1 + urix@0.1.0: {} + url-loader@4.1.1(file-loader@6.2.0(webpack@5.97.1))(webpack@5.97.1): dependencies: loader-utils: 2.0.4 @@ -14146,6 +16853,23 @@ snapshots: optionalDependencies: file-loader: 6.2.0(webpack@5.97.1) + use-callback-ref@1.3.3(@types/react@19.0.10)(react@19.0.0): + dependencies: + react: 19.0.0 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 19.0.10 + + use-sidecar@1.1.3(@types/react@19.0.10)(react@19.0.0): + dependencies: + detect-node-es: 1.1.0 + react: 19.0.0 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 19.0.10 + + use@3.1.1: {} + util-deprecate@1.0.2: {} utila@0.4.0: {} @@ -14165,6 +16889,8 @@ snapshots: vary@1.1.2: {} + vfile-location@2.0.6: {} + vfile-location@3.2.0: {} vfile-location@5.0.3: @@ -14172,6 +16898,10 @@ snapshots: '@types/unist': 3.0.3 vfile: 6.0.3 + vfile-message@1.1.1: + dependencies: + unist-util-stringify-position: 1.1.2 + vfile-message@2.0.4: dependencies: '@types/unist': 2.0.11 @@ -14182,6 +16912,13 @@ snapshots: '@types/unist': 3.0.3 unist-util-stringify-position: 4.0.0 + vfile@3.0.1: + dependencies: + is-buffer: 2.0.5 + replace-ext: 1.0.0 + unist-util-stringify-position: 1.1.2 + vfile-message: 1.1.1 + vfile@4.2.1: dependencies: '@types/unist': 2.0.11 @@ -14430,10 +17167,16 @@ snapshots: imurmurhash: 0.1.4 signal-exit: 4.1.0 + write@1.0.3: + dependencies: + mkdirp: 0.5.6 + ws@7.5.10: {} ws@8.18.0: {} + x-is-string@0.1.0: {} + xdg-basedir@5.1.0: {} xml-js@1.6.11: @@ -14448,6 +17191,10 @@ snapshots: yaml@2.7.0: {} + yargs-parser@10.1.0: + dependencies: + camelcase: 4.1.0 + yocto-queue@0.1.0: {} yocto-queue@1.1.1: {} diff --git a/src/components/Dialog/index.tsx b/src/components/Dialog/index.tsx new file mode 100644 index 000000000..07c001acb --- /dev/null +++ b/src/components/Dialog/index.tsx @@ -0,0 +1,103 @@ +/** @author Ka Pui (August) Cheung */ + +import * as RadixDialog from "@radix-ui/react-dialog"; +import { X } from "lucide-react"; + +import styles from "./styles.module.css"; + +export interface DialogProps { + isOpen: boolean; + onClose: () => void; + children: React.ReactNode; + className?: string; +} + +export function Dialog({ + isOpen, + onClose, + children, + className = "", +}: DialogProps) { + return ( + !open && onClose()}> + + + + {children} + + + + ); +} + +interface DialogContentProps { + className?: string; + children: React.ReactNode; +} + +export function DialogContent({ + className = "", + children, +}: DialogContentProps) { + return ( +
{children}
+ ); +} + +interface DialogHeaderProps { + className?: string; + children: React.ReactNode; + onClose?: () => void; +} + +export function DialogHeader({ + className = "", + children, + onClose, +}: DialogHeaderProps) { + return ( +
+ + {children} + + {onClose && ( + + + + )} +
+ ); +} + +interface DialogBodyProps { + className?: string; + children: React.ReactNode; +} + +export function DialogBody({ className = "", children }: DialogBodyProps) { + return ( + + {children} + + ); +} + +interface DialogFooterProps { + className?: string; + children: React.ReactNode; +} + +export function DialogFooter({ className = "", children }: DialogFooterProps) { + return ( +
+ {children} +
+ ); +} diff --git a/src/components/Dialog/styles.module.css b/src/components/Dialog/styles.module.css new file mode 100644 index 000000000..89c81576e --- /dev/null +++ b/src/components/Dialog/styles.module.css @@ -0,0 +1,108 @@ +/** @author Ka Pui (August) Cheung */ + +.dialogOverlay { + position: fixed; + z-index: var(--ifm-z-index-fixed); + display: flex; + align-items: center; + justify-content: center; + background-color: rgb(0 0 0 / 50%); + backdrop-filter: blur(2px); + animation: overlayShow var(--ifm-transition-fast) + var(--ifm-transition-timing-default); + inset: 0; +} + +.dialog { + position: fixed; + top: 50%; + left: 50%; + z-index: var(--ifm-z-index-overlay); + width: 90vw; + max-width: 500px; + max-height: 85vh; + background-color: var(--ifm-background-surface-color); + border-radius: var(--ifm-global-radius); + box-shadow: var(--ifm-global-shadow-tl); + transform: translate(-50%, -50%); + animation-name: dialog-fade-in; + animation-duration: var(--ifm-transition-fast); + animation-timing-function: var(--ifm-transition-timing-default); + animation-fill-mode: forwards; +} + +.dialogContent { + display: flex; + flex-direction: column; + width: 100%; + max-height: inherit; +} + +.dialogHeader { + display: flex; + align-items: center; + justify-content: space-between; + padding: var(--ifm-spacing-vertical) var(--ifm-spacing-horizontal); +} + +.dialogTitle { + flex-grow: 1; + margin: 0; + font-weight: var(--ifm-heading-font-weight); + font-size: var(--ifm-h4-font-size); + line-height: var(--ifm-heading-line-height); +} + +.dialogCloseButton { + position: static; + display: flex; + align-items: center; + justify-content: center; + padding: calc(var(--ifm-spacing-vertical) * 0.25) + calc(var(--ifm-spacing-horizontal) * 0.5); + color: var(--ifm-color-emphasis-700); + background: transparent; + border: none; + border-radius: var(--ifm-global-radius); + cursor: pointer; +} + +.dialogCloseButton:hover { + color: var(--ifm-color-emphasis-900); + background-color: var(--ifm-color-emphasis-200); +} + +.dialogBody { + flex: 1; + margin-bottom: 0; /** Cancels the margin added to `

` */ + padding: var(--ifm-spacing-vertical) var(--ifm-spacing-horizontal); + overflow-y: auto; +} + +.dialogFooter { + display: flex; + gap: var(--ifm-spacing-horizontal); + align-items: center; + justify-content: flex-end; + padding: var(--ifm-spacing-horizontal); + border-top: var(--ifm-global-border-width) solid var(--ifm-color-emphasis-300); +} + +@keyframes dialog-fade-in { + from { + transform: translate(-50%, -45%); + opacity: 0; + } + + to { + transform: translate(-50%, -50%); + opacity: 1; + } +} + +@media (width <= 576px) { + .dialog { + width: 95%; + max-width: none; + } +} diff --git a/src/components/DocumentFooter/index.tsx b/src/components/DocumentFooter/index.tsx new file mode 100644 index 000000000..75b70585a --- /dev/null +++ b/src/components/DocumentFooter/index.tsx @@ -0,0 +1,33 @@ +import Link from "@docusaurus/Link"; + +import EditIcon from "../icons/EditIcon"; +import classes from "./styles.module.css"; + +export interface DocumentFooterProps { + editHref: string; + lastUpdatedContent: React.ReactNode; +} + +export default function DocumentFooter({ + editHref, + lastUpdatedContent, +}: DocumentFooterProps) { + return ( +

+ ); +} diff --git a/src/components/DocumentFooter/styles.module.css b/src/components/DocumentFooter/styles.module.css new file mode 100644 index 000000000..bbee3c037 --- /dev/null +++ b/src/components/DocumentFooter/styles.module.css @@ -0,0 +1,18 @@ +/** Do not replace hardcoded values with CSS variables in this file, as these values are copied from Docusaurus. */ + +.iconEdit { + margin-right: 0.3em; + vertical-align: sub; +} + +.lastUpdated { + margin-top: 0.2rem; + font-size: smaller; + font-style: italic; +} + +@media (width >= 997px) { + .lastUpdated { + text-align: right; + } +} diff --git a/src/components/HomepageFeatures/styles.module.css b/src/components/HomepageFeatures/styles.module.css index b8ec513f8..f3c0ad5e5 100644 --- a/src/components/HomepageFeatures/styles.module.css +++ b/src/components/HomepageFeatures/styles.module.css @@ -1,13 +1,13 @@ .features { display: flex; align-items: center; - padding: 2rem 0; width: 100%; + padding: 2rem 0; } .featureSvg { - height: 200px; width: 200px; + height: 200px; } .featureLink { diff --git a/src/components/InfoButton/index.tsx b/src/components/InfoButton/index.tsx new file mode 100644 index 000000000..b8d6b9a41 --- /dev/null +++ b/src/components/InfoButton/index.tsx @@ -0,0 +1,64 @@ +/** @author Ka Pui (August) Cheung */ + +import { useState } from "react"; + +import { Dialog, DialogBody, DialogContent, DialogHeader } from "../Dialog"; +import Tooltip from "../Tooltip"; +import styles from "./styles.module.css"; + +export interface InfoButtonProps { + /** The content to display in the dialog. */ + content: React.ReactNode; + /** Optional title for the dialog. */ + title?: string; + /** Additional CSS class for the button. */ + className?: string; + /** Additional CSS class for the dialog content. */ + dialogClassName?: string; +} + +export default function InfoButton({ + content, + title = "Details", + className = "", + dialogClassName = "", +}: InfoButtonProps) { + const [isOpen, setIsOpen] = useState(false); + + const handleOpen = () => setIsOpen(true); + const handleClose = () => setIsOpen(false); + + const sanitizedContent = + typeof content === "string" ? ( +
+ ) : ( + content + ); + + return ( + <> + + + + + + + {title} + {sanitizedContent} + + + + ); +} diff --git a/src/components/InfoButton/styles.module.css b/src/components/InfoButton/styles.module.css new file mode 100644 index 000000000..5343bc30e --- /dev/null +++ b/src/components/InfoButton/styles.module.css @@ -0,0 +1,27 @@ +/** @author Ka Pui (August) Cheung */ + +.infoButton { + display: inline-flex; + align-items: center; + justify-content: center; + width: 18px; + height: 18px; + margin-left: calc(var(--ifm-spacing-horizontal) * 0.5); + padding: 0; + font-weight: var(--ifm-font-weight-bold); + font-size: calc(var(--ifm-font-size-base) * 0.75); + font-style: normal; + vertical-align: middle; + border: none; + border-radius: var(--ifm-button-border-radius); + cursor: pointer; +} + +.infoContent { + font-size: var(--ifm-font-size-base); + line-height: var(--ifm-line-height-base); +} + +.infoContent p:last-child { + margin-bottom: 0; +} diff --git a/src/components/SelectableButton/index.tsx b/src/components/SelectableButton/index.tsx new file mode 100644 index 000000000..0bc790cc0 --- /dev/null +++ b/src/components/SelectableButton/index.tsx @@ -0,0 +1,54 @@ +/** @author Ka Pui (August) Cheung */ + +import styles from "./styles.module.css"; + +export interface SelectableButtonProps { + name: string; + value: string; + label: string; + checked: boolean; + onChange: (value: string, isChecked: boolean) => void; + type: "radio" | "checkbox"; + disabled?: boolean; +} + +/** + * A selectable button that can be used as either a radio button or checkbox + * Radio mode still allows for deselection (unlike native radio buttons) + */ +export default function SelectableButton({ + name, + value, + label, + checked, + onChange, + type, + disabled = false, +}: SelectableButtonProps) { + function handleChange() { + // For radio-like behavior, we toggle the checked state + // This allows deselection which regular radio buttons don't support + if (!disabled) onChange(value, !checked); + } + + return ( + + ); +} diff --git a/src/components/SelectableButton/styles.module.css b/src/components/SelectableButton/styles.module.css new file mode 100644 index 000000000..54616e8cf --- /dev/null +++ b/src/components/SelectableButton/styles.module.css @@ -0,0 +1,120 @@ +/** @author Ka Pui (August) Cheung */ + +.selectableButtonLabel { + position: relative; + display: flex; + gap: calc(var(--ifm-spacing-horizontal) * 0.5); + align-items: center; + cursor: pointer; +} + +/* Hide the actual input */ +.selectableButtonInput { + position: absolute; + width: 0; + height: 0; + overflow: hidden; + opacity: 0; +} + +/* Custom control container (both checkbox and radio) */ +.customControl { + position: relative; + display: inline-flex; + flex: 0 0 auto; + align-items: center; + justify-content: center; + width: 18px; + height: 18px; + background-color: var(--ifm-background-surface-color); + border: calc(var(--ifm-global-border-width) * 1.5) solid + var(--ifm-color-emphasis-500); + border-radius: var(--ifm-global-radius); + transition: all var(--ifm-transition-fast) + var(--ifm-transition-timing-default); +} + +/* Radio variant */ +.radio { + border-radius: 50%; +} + +/* Checked state styling for both */ +.selectableButtonInput:checked ~ .customControl { + background-color: var(--ifm-color-primary); + border-color: var(--ifm-color-primary); +} + +/* Checkmark icon */ +.checkbox::after { + position: absolute; + top: 50%; + left: 50%; + display: block; + width: 9px; + height: 5px; + border: solid var(--ifm-color-white); + border-width: 0 0 2px 2px; + transform: translate(-50%, -70%) rotate(-45deg); + opacity: 0; + content: ""; +} + +/* Radio dot */ +.radio::after { + position: absolute; + top: 50%; + left: 50%; + width: 8px; + height: 8px; + background-color: var(--ifm-color-white); + border-radius: 50%; + transform: translate(-50%, -50%) scale(0); + opacity: 0; + transition: all var(--ifm-transition-fast) + var(--ifm-transition-timing-default); + content: ""; +} + +/* Show indicators when checked */ +.selectableButtonInput:checked ~ .checkbox::after, +.selectableButtonInput:checked ~ .radio::after { + opacity: 1; +} + +/* Special animation for radio button */ +.selectableButtonInput:checked ~ .radio::after { + transform: translate(-50%, -50%) scale(1); +} + +/* Dark mode specific styles */ +html[data-theme="dark"] .selectableButtonInput:checked ~ .checkbox::after { + border-color: var(--ifm-color-black); +} + +html[data-theme="dark"] .selectableButtonInput:checked ~ .radio::after { + background-color: var(--ifm-color-black); +} + +/* Hover and focus styles */ +.selectableButtonInput:hover ~ .customControl, +.selectableButtonInput:focus ~ .customControl { + border-color: var(--ifm-color-primary); +} + +/* Disabled state */ +.selectableButtonLabel.disabled { + cursor: not-allowed; + opacity: 0.5; +} + +.selectableButtonInput:disabled ~ .customControl { + background-color: var(--ifm-color-emphasis-200); + border-color: var(--ifm-color-emphasis-300); +} + +/* Text styling */ +.selectableButtonText { + font-size: var(--ifm-font-size-base); + line-height: calc(var(--ifm-line-height-base) * 0.8); +} diff --git a/src/components/Tooltip/index.tsx b/src/components/Tooltip/index.tsx new file mode 100644 index 000000000..2a31ef125 --- /dev/null +++ b/src/components/Tooltip/index.tsx @@ -0,0 +1,78 @@ +/** @author Ka Pui (August) Cheung */ + +import * as RadixTooltip from "@radix-ui/react-tooltip"; +import { type ReactNode, useRef } from "react"; + +import styles from "./styles.module.css"; + +export interface TooltipProps { + /** The content to display in the tooltip */ + content: ReactNode; + /** The trigger element that will show the tooltip on hover */ + children: ReactNode; + /** Optional CSS class for the tooltip content */ + className?: string; + /** Tooltip side preference */ + side?: "top" | "right" | "bottom" | "left"; + /** Tooltip alignment preference */ + align?: "start" | "center" | "end"; + + keepOpenOnActivate?: boolean; +} + +export default function Tooltip({ + content, + children, + className = "", + side = "top", + align = "center", + keepOpenOnActivate, +}: TooltipProps) { + const triggerRef = useRef(null); + + return ( + + { + if (keepOpenOnActivate) event.preventDefault(); + }} + > + {children} + + + { + if (keepOpenOnActivate && event.target === triggerRef.current) + event.preventDefault(); + }} + > + {content} + + + + + ); +} + +export function TooltipDisabledTarget({ + children, + ...props +}: React.ComponentProps<"span">) { + return ( + + {children} + + ); +} diff --git a/src/components/Tooltip/styles.module.css b/src/components/Tooltip/styles.module.css new file mode 100644 index 000000000..2c90083e1 --- /dev/null +++ b/src/components/Tooltip/styles.module.css @@ -0,0 +1,69 @@ +/** @author Ka Pui (August) Cheung */ + +.tooltipContent { + z-index: var(--ifm-z-index-overlay); + max-width: 350px; + padding: calc(var(--ifm-spacing-vertical) * 0.5) + calc(var(--ifm-spacing-horizontal) * 0.75); + color: var(--ifm-color-white); + font-size: var(--ifm-font-size-base); + line-height: calc(var(--ifm-line-height-base) * 0.9); + background-color: var(--ifm-color-emphasis-900); + border-radius: var(--ifm-global-radius); + box-shadow: var(--ifm-global-shadow-md); + animation-duration: var(--ifm-transition-fast); + animation-timing-function: var(--ifm-transition-timing-default); + animation-fill-mode: forwards; + user-select: none; +} + +.tooltipContent[data-state="delayed-open"] { + animation-name: fade-in; +} + +.tooltipContent[data-side="top"] { + transform-origin: bottom; +} + +.tooltipContent[data-side="bottom"] { + transform-origin: top; +} + +.tooltipContent[data-side="left"] { + transform-origin: right; +} + +.tooltipContent[data-side="right"] { + transform-origin: left; +} + +.tooltipArrow { + fill: var(--ifm-color-emphasis-900); +} + +/* Dark mode */ +html[data-theme="dark"] .tooltipContent { + color: var(--ifm-color-black); + background-color: var(--ifm-color-white); +} + +html[data-theme="dark"] .tooltipArrow { + fill: var(--ifm-color-white); +} + +@keyframes fade-in { + from { + transform: scale(0.95); + opacity: 0; + } + + to { + transform: scale(1); + opacity: 1; + } +} + +.tooltipDisabledTarget > * { + width: 100%; + height: 100%; +} diff --git a/src/components/TooltipProvider/index.tsx b/src/components/TooltipProvider/index.tsx new file mode 100644 index 000000000..23efbbee7 --- /dev/null +++ b/src/components/TooltipProvider/index.tsx @@ -0,0 +1,20 @@ +/** @author Ka Pui (August) Cheung */ + +import * as RadixTooltip from "@radix-ui/react-tooltip"; +import { type ReactNode } from "react"; + +export interface TooltipProviderProps { + children: ReactNode; + delayDuration?: number; +} + +export default function TooltipProvider({ + children, + delayDuration = 300, +}: TooltipProviderProps) { + return ( + + {children} + + ); +} diff --git a/src/components/icons/EditIcon.tsx b/src/components/icons/EditIcon.tsx new file mode 100644 index 000000000..07d5c8b16 --- /dev/null +++ b/src/components/icons/EditIcon.tsx @@ -0,0 +1,26 @@ +/** @author Ka Pui (August) Cheung */ + +import { type IconProps } from "./types"; + +export default function EditIcon({ + className, + size = 24, + ...props +}: IconProps) { + return ( + + + + + + ); +} diff --git a/src/components/icons/types.tsx b/src/components/icons/types.tsx new file mode 100644 index 000000000..a68f1e144 --- /dev/null +++ b/src/components/icons/types.tsx @@ -0,0 +1,6 @@ +/** @author Ka Pui (August) Cheung */ + +export interface IconProps extends React.ComponentProps<"svg"> { + className?: string; + size?: number; +} diff --git a/src/css/custom.css b/src/css/custom.css index 14b2dfbcd..6fa6a5b96 100644 --- a/src/css/custom.css +++ b/src/css/custom.css @@ -28,3 +28,16 @@ --ifm-color-primary-lightest: #fff; --docusaurus-highlighted-code-line-bg: rgb(0 0 0 / 30%); } + +html { + scroll-padding-top: var(--ifm-navbar-height); +} + +button, +.button { + font-family: var(--ifm-font-family-base); +} + +select { + font-family: var(--ifm-font-family-base); +} diff --git a/src/data/storage-finder/facet-tree.json b/src/data/storage-finder/facet-tree.json new file mode 100644 index 000000000..b5bc9d465 --- /dev/null +++ b/src/data/storage-finder/facet-tree.json @@ -0,0 +1,481 @@ +[ + { + "id": "4", + "name": "What is the risk classification of your data?", + "control_type": "radio", + "parent": "0", + "weight": "0", + "selected": false, + "description": "\u003Cp\u003E\u003Cstrong\u003EPublic\/Low Risk\u003C\/strong\u003E if either of the following conditions apply:\u003C\/p\u003E\u003Cp\u003E1. The data is generally available to the public, or\u003Cbr\u003E2. The unauthorized use, access, or alteration of the data would not have an adverse impact on NYU or an individual community member.\u003C\/p\u003E\u003Cp\u003E\u003Cstrong\u003ESensitive\/Moderate Risk\u003C\/strong\u003E if any of the following conditions apply:\u003C\/p\u003E\u003Cp\u003E1. The data is governed by laws or regulations that restrict the use or disclosure of such data, or\u003Cbr\u003E2. The data is subject to contractual restrictions that restrict the use or disclosure of such data, or\u003Cbr\u003E3. The unauthorized use, access, or alteration of the data could have an adverse impact on NYU or an individual community member.\u003C\/p\u003E\u003Cp\u003E\u003Cstrong\u003EConfidential or Restricted \/ High Risk\u003C\/strong\u003E if either of the following conditions apply:\u003C\/p\u003E\u003Cp\u003E1. The data is governed by laws or regulations that require NYU to report to the government and\/or provide notice to individuals if the data is breached, or\u003Cbr\u003E2. The unauthorized use, access, or alteration of the data could have a significant adverse impact on NYU or an individual community member\u003C\/p\u003E\u003Cp\u003E\u003Cstrong\u003EHIPAA Regulated\u003C\/strong\u003E if the following condition applys:\u003C\/p\u003E\u003Cp\u003E1. The data contains personally identifiable health information about patients, including Protected Health Information (PHI), or\u003Cbr\u003E2. The data matches the policies defined at \u003Ca href=\u0022https:\/\/www.nyu.edu\/about\/policies-guidelines-compliance\/policies-and-guidelines\/hipaa-policies.html\u0022\u003EHIPAA Security Policies\u003C\/a\u003E\u003C\/p\u003E\u003Cp\u003EFor more information see \u003Ca href=\u0022https:\/\/www.nyu.edu\/about\/policies-guidelines-compliance\/policies-and-guidelines\/electronic-data-and-system-risk-classification.html\u0022\u003EElectronic Data and System Risk Classification Policy\u003C\/a\u003E\u003C\/p\u003E", + "choices": [ + { + "id": "5", + "name": "Public \/ Low Risk", + "control_type": "radio", + "parent": "4", + "weight": "0", + "selected": false, + "description": null + }, + { + "id": "6", + "name": "Sensitive \/ Moderate Risk", + "control_type": "radio", + "parent": "4", + "weight": "1", + "selected": false, + "description": null + }, + { + "id": "7", + "name": "Confidential or Restricted \/ High Risk", + "control_type": "radio", + "parent": "4", + "weight": "2", + "selected": false, + "description": null + }, + { + "id": "8", + "name": "HIPAA-Regulated", + "control_type": "radio", + "parent": "4", + "weight": "3", + "selected": false, + "description": null + } + ] + }, + { + "id": "27", + "name": "What is your University affiliation?", + "control_type": "radio", + "parent": "0", + "weight": "2", + "selected": false, + "description": "\u003Cp\u003EA full-time NYU faculty member can sponsor a non-NYU collaborator for an affiliate status. Please see \u003Ca href=\u0022https:\/\/nyu.service-now.com\/sp?sys_kb_id=621146614050d5442a5dc4baadd48b32\u0026amp;id=kb_article_view\u0026amp;sysparm_rank=1\u0026amp;sysparm_tsqueryId=7d719c551b2820d0a54ffdd51a4bcb90\u0022\u003Einstructions for affiliate management\u003C\/a\u003E (NYU NetID login is required to follow the link).\u003C\/p\u003E", + "choices": [ + { + "id": "28", + "name": "Faculty or research principal investigator (PI)", + "control_type": "radio", + "parent": "27", + "weight": "0", + "selected": false, + "description": null + }, + { + "id": "29", + "name": "University staff", + "control_type": "radio", + "parent": "27", + "weight": "1", + "selected": false, + "description": null + }, + { + "id": "30", + "name": "Student", + "control_type": "radio", + "parent": "27", + "weight": "2", + "selected": false, + "description": null + } + ] + }, + { + "id": "31", + "name": "For what purpose will you be using this storage?", + "control_type": "radio", + "parent": "0", + "weight": "5", + "selected": false, + "description": null, + "choices": [ + { + "id": "33", + "name": "Backups", + "control_type": "radio", + "parent": "31", + "weight": "0", + "selected": false, + "description": null + }, + { + "id": "32", + "name": "Data storage for a project or team", + "control_type": "radio", + "parent": "31", + "weight": "1", + "selected": false, + "description": null + }, + { + "id": "35", + "name": "Hosting an application or database", + "control_type": "radio", + "parent": "31", + "weight": "2", + "selected": false, + "description": null + }, + { + "id": "34", + "name": "Long-term preservation", + "control_type": "radio", + "parent": "31", + "weight": "3", + "selected": false, + "description": null + }, + { + "id": "36", + "name": "Sharing data externally with a web link", + "control_type": "radio", + "parent": "31", + "weight": "4", + "selected": false, + "description": null + } + ] + }, + { + "id": "37", + "name": "From where will the data be accessed?", + "control_type": "radio", + "parent": "0", + "weight": "6", + "selected": false, + "description": null, + "choices": [ + { + "id": "38", + "name": "On a NYU campus network or remotely through a VPN", + "control_type": "checkbox", + "parent": "37", + "weight": "0", + "selected": false, + "description": null + }, + { + "id": "61", + "name": "Public Cloud Provider", + "control_type": "checkbox", + "parent": "37", + "weight": "1", + "selected": false, + "description": "\u003Cp\u003EGCP, AWS\u003C\/p\u003E" + }, + { + "id": "39", + "name": "Off campus without a VPN", + "control_type": "checkbox", + "parent": "37", + "weight": "2", + "selected": false, + "description": null + }, + { + "id": "40", + "name": "From a web browser", + "control_type": "checkbox", + "parent": "37", + "weight": "3", + "selected": false, + "description": null + }, + { + "id": "41", + "name": "From workstations or laptops", + "control_type": "checkbox", + "parent": "37", + "weight": "4", + "selected": false, + "description": null + } + ] + }, + { + "id": "47", + "name": "How large is any individual file in this collection likely to be?", + "control_type": "radio", + "parent": "0", + "weight": "7", + "selected": false, + "description": null, + "choices": [ + { + "id": "49", + "name": "Some individual files will be larger than 10 GB", + "control_type": "radio", + "parent": "47", + "weight": "0", + "selected": false, + "description": null + }, + { + "id": "50", + "name": "Some individual files will be larger than 15 GB", + "control_type": "radio", + "parent": "47", + "weight": "1", + "selected": false, + "description": null + }, + { + "id": "48", + "name": "Some individual files will be larger than 5 GB", + "control_type": "radio", + "parent": "47", + "weight": "2", + "selected": false, + "description": null + }, + { + "id": "51", + "name": "Some individual files will be larger than 5 TB (terabytes)", + "control_type": "radio", + "parent": "47", + "weight": "3", + "selected": false, + "description": null + } + ] + }, + { + "id": "52", + "name": "What additional capabilities do you require for data storage?", + "control_type": "radio", + "parent": "0", + "weight": "8", + "selected": false, + "description": null, + "choices": [ + { + "id": "54", + "name": "Access level controls (admin, read, write, etc.)", + "control_type": "checkbox", + "parent": "52", + "weight": "0", + "selected": false, + "description": null + }, + { + "id": "60", + "name": "Automated workflows", + "control_type": "checkbox", + "parent": "52", + "weight": "1", + "selected": false, + "description": null + }, + { + "id": "59", + "name": "Code sharing \/ code management", + "control_type": "checkbox", + "parent": "52", + "weight": "2", + "selected": false, + "description": null + }, + { + "id": "58", + "name": "Data replication (copy of data exists in other location(s))", + "control_type": "checkbox", + "parent": "52", + "weight": "3", + "selected": false, + "description": null + }, + { + "id": "57", + "name": "Data transfer from instruments", + "control_type": "checkbox", + "parent": "52", + "weight": "4", + "selected": false, + "description": null + }, + { + "id": "53", + "name": "Generate DOIs for datasets (Digital Object Identifier)", + "control_type": "checkbox", + "parent": "52", + "weight": "5", + "selected": false, + "description": null + }, + { + "id": "56", + "name": "Large data transfers", + "control_type": "checkbox", + "parent": "52", + "weight": "6", + "selected": false, + "description": null + }, + { + "id": "55", + "name": "Version control \/ snapshots", + "control_type": "checkbox", + "parent": "52", + "weight": "7", + "selected": false, + "description": null + } + ] + }, + { + "id": "21", + "name": "Who needs access to your data?", + "control_type": "radio", + "parent": "0", + "weight": "9", + "selected": false, + "description": null, + "choices": [ + { + "id": "26", + "name": "No sharing, individual use only", + "control_type": "radio", + "parent": "21", + "weight": "0", + "selected": false, + "description": null + }, + { + "id": "23", + "name": "Non-specific collaborators via a shared link", + "control_type": "radio", + "parent": "21", + "weight": "1", + "selected": false, + "description": null + }, + { + "id": "22", + "name": "Public access for a research data management plan", + "control_type": "radio", + "parent": "21", + "weight": "2", + "selected": false, + "description": null + }, + { + "id": "24", + "name": "Specific affiliated collaborators with NetIDs", + "control_type": "radio", + "parent": "21", + "weight": "3", + "selected": false, + "description": null + }, + { + "id": "25", + "name": "Specific collaborators external to NYU without NetIDs", + "control_type": "radio", + "parent": "21", + "weight": "4", + "selected": false, + "description": null + } + ] + }, + { + "id": "9", + "name": "Do you need backups, snapshots or replication of your data?", + "control_type": "radio", + "parent": "0", + "weight": "10", + "selected": false, + "description": null, + "choices": [ + { + "id": "11", + "name": "No", + "control_type": "radio", + "parent": "9", + "weight": "0", + "selected": false, + "description": null + }, + { + "id": "10", + "name": "Yes", + "control_type": "radio", + "parent": "9", + "weight": "1", + "selected": false, + "description": null + } + ] + }, + { + "id": "12", + "name": "How much data do you have and how fast will it grow?", + "control_type": "radio", + "parent": "0", + "weight": "11", + "selected": false, + "description": null, + "choices": [ + { + "id": "13", + "name": "Unlikely to exceed 1TB in 2 years", + "control_type": "checkbox", + "parent": "12", + "weight": "0", + "selected": false, + "description": null + }, + { + "id": "14", + "name": "Greater than 1TB or likely to exceed in 2 years", + "control_type": "checkbox", + "parent": "12", + "weight": "1", + "selected": false, + "description": null + } + ] + }, + { + "id": "17", + "name": "How are you currently using the data?", + "control_type": "radio", + "parent": "0", + "weight": "12", + "selected": false, + "description": null, + "choices": [ + { + "id": "18", + "name": "Actively processing data (creating, editing, calculating)", + "control_type": "radio", + "parent": "17", + "weight": "0", + "selected": false, + "description": null + }, + { + "id": "20", + "name": "Private archive: Access controlled, not published", + "control_type": "radio", + "parent": "17", + "weight": "1", + "selected": false, + "description": null + }, + { + "id": "19", + "name": "Publishing \/ sharing your data: Worldwide, read-only access to a completed data set", + "control_type": "radio", + "parent": "17", + "weight": "2", + "selected": false, + "description": null + } + ] + } +] diff --git a/src/data/storage-finder/service-list.json b/src/data/storage-finder/service-list.json new file mode 100644 index 000000000..a5b7ef44c --- /dev/null +++ b/src/data/storage-finder/service-list.json @@ -0,0 +1,1379 @@ +[ + { + "id": "9", + "title": "Amazon S3", + "facet_matches": [ + "5", + "6", + "7", + "28", + "29", + "33", + "32", + "35", + "34", + "36", + "38", + "61", + "39", + "40", + "41", + "49", + "50", + "48", + "54", + "60", + "58", + "57", + "56", + "55", + "26", + "23", + "22", + "24", + "25", + "11", + "10", + "13", + "14", + "18", + "20", + "19" + ], + "summary": null, + "field_data": { + "field_alumni_access": { + "value": "\u003Cp\u003ENot Available\u003C\/p\u003E", + "label": "Alumni Access", + "weight": 10 + }, + "field_backup": { + "value": "\u003Cp\u003EAvailable for additional cost.\u003C\/p\u003E", + "label": "Backup", + "weight": 11 + }, + "field_eligibility": { + "value": "\u003Cp\u003EStaff and Faculty.\u003C\/p\u003E", + "label": "Eligibility", + "weight": 7 + }, + "field_limitations": { + "value": "\u003Cp\u003EAWS S3 is a chargeback service and an NYU chartfield is required for chargeback.\u003Cbr\u003EMax individual file upload size is 5TB.\u003C\/p\u003E\u003Cp\u003E\u0026nbsp;\u003C\/p\u003E", + "label": "Limitations", + "weight": 5 + }, + "field_links": { + "value": "\u003Cp\u003E\u003Ca href=\u0022https:\/\/www.nyu.edu\/servicelink\/KB0020307\u0022\u003EAmazon S3\u003C\/a\u003E\u003C\/p\u003E", + "label": "Links", + "weight": 2 + }, + "field_permission_settings": { + "value": "\u003Cp dir=\u0022ltr\u0022\u003ERestricted access by individual or group.\u003C\/p\u003E", + "label": "Permission Settings", + "weight": 6 + }, + "field_storable_files": { + "value": "\u003Cp\u003EHigh, Moderate, \u0026amp; Low Risk.\u003Cbr\u003E\u0026nbsp;\u003C\/p\u003E", + "label": "Storable Files", + "weight": 3 + }, + "field_synchronous_access": { + "value": "\u003Cp\u003ENot Available\u003C\/p\u003E", + "label": "Synchronous Access", + "weight": 9 + }, + "field_use_case": { + "value": "\u003Cp\u003EArchive and long-term, high-security storage of large datasets.\u003C\/p\u003E", + "label": "Use Case", + "weight": 4 + } + } + }, + { + "id": "15", + "title": "Distributed storage on the HSRN", + "facet_matches": ["5", "6", "10", "13", "14"], + "summary": null, + "field_data": { + "field_alumni_access": { + "value": "\u003Cp\u003EAvailable\u003C\/p\u003E", + "label": "Alumni Access", + "weight": 10 + }, + "field_backup": { + "value": "\u003Cp\u003EYes, 30 day retention\u0026nbsp;\u003C\/p\u003E", + "label": "Backup", + "weight": 11 + }, + "field_eligibility": { + "value": "\u003Cp\u003EFaculty sponsored\u003C\/p\u003E", + "label": "Eligibility", + "weight": 7 + }, + "field_limitations": { + "value": "\u003Cp\u003E2TB limit with 60 day purge policy for untouched files\u003C\/p\u003E", + "label": "Limitations", + "weight": 5 + }, + "field_links": { + "value": "\u003Cp\u003E\u003Ca href=\u0022http:\/\/hpc.nyu.edu\/\u0022\u003Ehpc.nyu.edu\u003C\/a\u003E\u003C\/p\u003E", + "label": "Links", + "weight": 2 + }, + "field_permission_settings": { + "value": "\u003Cp\u003EUser controlled using facl\u003C\/p\u003E", + "label": "Permission Settings", + "weight": 6 + }, + "field_storable_files": { + "value": "\u003Cp\u003EModerate\u0026nbsp;\u0026amp; Low risk\u003C\/p\u003E", + "label": "Storable Files", + "weight": 3 + }, + "field_synchronous_access": { + "value": "\u003Cp\u003EYes\u003C\/p\u003E", + "label": "Synchronous Access", + "weight": 9 + }, + "field_use_case": { + "value": "\u003Cp\u003ELong term storage\u003C\/p\u003E", + "label": "Use Case", + "weight": 4 + } + } + }, + { + "id": "5", + "title": "File Sharing (Windows)", + "facet_matches": [ + "5", + "6", + "7", + "28", + "29", + "33", + "32", + "35", + "34", + "38", + "41", + "49", + "50", + "48", + "54", + "60", + "57", + "56", + "55", + "26", + "24", + "11", + "10", + "13", + "14", + "18", + "20" + ], + "summary": null, + "field_data": { + "field_alumni_access": { + "value": "\u003Cp\u003ENot Available\u003C\/p\u003E", + "label": "Alumni Access", + "weight": 10 + }, + "field_backup": { + "value": "\u003Cp dir=\u0022ltr\u0022\u003EBacked up daily, retains last 30 days; monitored 24x7\u003C\/p\u003E", + "label": "Backup", + "weight": 11 + }, + "field_eligibility": { + "value": "\u003Cp dir=\u0022ltr\u0022\u003ENYU Units, Faculty, Staff, Researchers\u003C\/p\u003E", + "label": "Eligibility", + "weight": 7 + }, + "field_limitations": { + "value": "\u003Cp dir=\u0022ltr\u0022\u003EWorkstations will have to be joined to NYU\u0027s Active Directory\u003C\/p\u003E", + "label": "Limitations", + "weight": 5 + }, + "field_links": { + "value": "\u003Cp\u003E\u003Ca href=\u0022https:\/\/www.nyu.edu\/life\/information-technology\/communication-and-collaboration\/document-collaboration-and-sharing\/file-sharing-windows.html\u0022\u003EFile Sharing (Windows)\u003C\/a\u003E\u003C\/p\u003E", + "label": "Links", + "weight": 2 + }, + "field_permission_settings": { + "value": "\u003Cp dir=\u0022ltr\u0022\u003EOptions for read only, modify, or remove. Activated in NYU\u0027s Active Directory security groups via role-based access.\u003C\/p\u003E", + "label": "Permission Settings", + "weight": 6 + }, + "field_storable_files": { + "value": "\u003Cp dir=\u0022ltr\u0022\u003EHigh, Moderate, \u0026amp; Low Risk\u003C\/p\u003E", + "label": "Storable Files", + "weight": 3 + }, + "field_synchronous_access": { + "value": "\u003Cp dir=\u0022ltr\u0022\u003EUnlimited access to the file share but files can only be editable by one person unless the application allows otherwise.\u003C\/p\u003E", + "label": "Synchronous Access", + "weight": 9 + }, + "field_use_case": { + "value": "\u003Cp dir=\u0022ltr\u0022\u003ENYU departments that want to store \u0026amp; share files of low \u0026amp; moderate security\u003C\/p\u003E", + "label": "Use Case", + "weight": 4 + } + } + }, + { + "id": "14", + "title": "HPC AI Storage", + "facet_matches": [ + "5", + "6", + "28", + "29", + "30", + "38", + "41", + "49", + "50", + "48", + "51", + "54", + "26", + "24", + "11", + "13", + "14", + "18" + ], + "summary": null, + "field_data": { + "field_alumni_access": { + "value": "\u003Cp\u003EAvailable\u003C\/p\u003E", + "label": "Alumni Access", + "weight": 10 + }, + "field_backup": { + "value": "\u003Cp\u003ENo\u003C\/p\u003E", + "label": "Backup", + "weight": 11 + }, + "field_eligibility": { + "value": "\u003Cp\u003EFaculty sponsored\u003C\/p\u003E", + "label": "Eligibility", + "weight": 7 + }, + "field_limitations": { + "value": "\u003Cp\u003E2TB limit with 60 day purge policy for untouched files\u003C\/p\u003E", + "label": "Limitations", + "weight": 5 + }, + "field_links": { + "value": "\u003Cp\u003E\u003Ca href=\u0022http:\/\/hpc.nyu.edu\/\u0022\u003Ehpc.nyu.edu\u003C\/a\u003E\u003C\/p\u003E", + "label": "Links", + "weight": 2 + }, + "field_permission_settings": { + "value": "\u003Cp\u003EUser controlled using facl\u003C\/p\u003E", + "label": "Permission Settings", + "weight": 6 + }, + "field_storable_files": { + "value": "\u003Cp\u003EModerate\u0026nbsp;\u0026amp; Low risk\u003C\/p\u003E", + "label": "Storable Files", + "weight": 3 + }, + "field_synchronous_access": { + "value": "\u003Cp\u003EYes\u003C\/p\u003E", + "label": "Synchronous Access", + "weight": 9 + }, + "field_use_case": { + "value": "\u003Cp\u003ETemporary\u0026nbsp;storage\u003C\/p\u003E", + "label": "Use Case", + "weight": 4 + } + } + }, + { + "id": "20", + "title": "HPC Archive", + "facet_matches": [ + "5", + "6", + "28", + "29", + "30", + "32", + "34", + "38", + "41", + "49", + "50", + "48", + "54", + "26", + "24", + "10", + "13", + "14", + "18", + "20" + ], + "summary": null, + "field_data": { + "field_alumni_access": { + "value": "\u003Cp\u003EAvailable\u003C\/p\u003E", + "label": "Alumni Access", + "weight": 10 + }, + "field_backup": { + "value": "\u003Cp\u003EYes, 30 day retention\u003C\/p\u003E", + "label": "Backup", + "weight": 11 + }, + "field_eligibility": { + "value": "\u003Cp\u003EFaculty sponsored\u003C\/p\u003E", + "label": "Eligibility", + "weight": 7 + }, + "field_limitations": { + "value": "\u003Cp\u003E2TB limit\u003C\/p\u003E", + "label": "Limitations", + "weight": 5 + }, + "field_links": { + "value": "\u003Cp\u003E\u003Ca href=\u0022http:\/\/hpc.nyu.edu\/\u0022\u003Ehpc.nyu.edu\u003C\/a\u003E\u003C\/p\u003E", + "label": "Links", + "weight": 2 + }, + "field_permission_settings": { + "value": "\u003Cp\u003EUser controlled using facl\u003C\/p\u003E", + "label": "Permission Settings", + "weight": 6 + }, + "field_storable_files": { + "value": "\u003Cp\u003EModerate\u0026nbsp;\u0026amp; Low risk\u003C\/p\u003E", + "label": "Storable Files", + "weight": 3 + }, + "field_synchronous_access": { + "value": "\u003Cp\u003EYes\u003C\/p\u003E", + "label": "Synchronous Access", + "weight": 9 + }, + "field_use_case": { + "value": "\u003Cp\u003ELong term storage\u003C\/p\u003E", + "label": "Use Case", + "weight": 4 + } + } + }, + { + "id": "8", + "title": "HPC Research Project Space", + "facet_matches": [ + "5", + "6", + "28", + "29", + "33", + "32", + "34", + "38", + "41", + "49", + "50", + "48", + "51", + "54", + "56", + "26", + "24", + "10", + "13", + "14", + "18", + "20" + ], + "summary": null, + "field_data": { + "field_alumni_access": { + "value": "\u003Cp\u003EAvailable to Alumni and external collaborators with sponsorship.\u003C\/p\u003E", + "label": "Alumni Access", + "weight": 10 + }, + "field_backup": { + "value": "\u003Cp\u003ERetains past 30 days.\u003C\/p\u003E", + "label": "Backup", + "weight": 11 + }, + "field_eligibility": { + "value": "\u003Cp\u003EFaculty, Researcher, and Graduate Student\u0026nbsp;HPC user account holders.\u003C\/p\u003E", + "label": "Eligibility", + "weight": 7 + }, + "field_limitations": { + "value": "\u003Cp dir=\u0022ltr\u0022\u003EStorage space and number of inodes (files) are available for a fee.\u0026nbsp;\u003C\/p\u003E\u003Cp dir=\u0022ltr\u0022\u003ENo limit on the amount of storage that can be purchased, but significant purchases may require approval.\u003C\/p\u003E", + "label": "Limitations", + "weight": 5 + }, + "field_links": { + "value": "\u003Cp\u003E\u003Ca href=\u0022https:\/\/sites.google.com\/nyu.edu\/nyu-hpc\/hpc-systems\/hpc-storage\/data-management\/research-project-space-rps\u0022\u003EResearch Project Space\u003C\/a\u003E\u003C\/p\u003E", + "label": "Links", + "weight": 2 + }, + "field_permission_settings": { + "value": "\u003Cp dir=\u0022ltr\u0022\u003ERestricted access by individual or group using Access Control Lists (ACLs).\u003C\/p\u003E\u003Cp dir=\u0022ltr\u0022\u003ESharing with external collaborators is possible using\u0026nbsp;\u003Ca href=\u0022https:\/\/www.nyu.edu\/life\/information-technology\/research-computing-services\/research-data-and-tools\/globus-data-transfer-node.html\u0022\u003EGlobus Data Transfer Node\u003C\/a\u003E .\u003C\/p\u003E", + "label": "Permission Settings", + "weight": 6 + }, + "field_storable_files": { + "value": "\u003Cp\u003EModerate \u0026amp; Low Risk\u003Cbr\u003E\u0026nbsp;\u003C\/p\u003E", + "label": "Storable Files", + "weight": 3 + }, + "field_synchronous_access": { + "value": "\u003Cp\u003ENot Available.\u003C\/p\u003E", + "label": "Synchronous Access", + "weight": 9 + }, + "field_use_case": { + "value": "\u003Cp\u003EUse of the high-security HPC environment to actively analyze research data.\u003C\/p\u003E", + "label": "Use Case", + "weight": 4 + } + } + }, + { + "id": "12", + "title": "HPC Scratch", + "facet_matches": [ + "5", + "6", + "28", + "29", + "30", + "38", + "41", + "49", + "50", + "48", + "51", + "54", + "26", + "24", + "11", + "13", + "14", + "18" + ], + "summary": null, + "field_data": { + "field_alumni_access": { + "value": "\u003Cp\u003EAvailable\u003C\/p\u003E", + "label": "Alumni Access", + "weight": 10 + }, + "field_backup": { + "value": "\u003Cp\u003ENo\u003C\/p\u003E", + "label": "Backup", + "weight": 11 + }, + "field_eligibility": { + "value": "\u003Cp\u003EFaculty sponsored\u003C\/p\u003E", + "label": "Eligibility", + "weight": 7 + }, + "field_limitations": { + "value": "\u003Cp\u003E2TB limit with 60 day purge policy for untouched files\u003C\/p\u003E", + "label": "Limitations", + "weight": 5 + }, + "field_links": { + "value": "\u003Cp\u003E\u003Ca href=\u0022http:\/\/hpc.nyu.edu\/\u0022\u003Ehpc.nyu.edu\u003C\/a\u003E\u003C\/p\u003E", + "label": "Links", + "weight": 2 + }, + "field_permission_settings": { + "value": "\u003Cp\u003EUser controlled using facl\u003C\/p\u003E", + "label": "Permission Settings", + "weight": 6 + }, + "field_storable_files": { + "value": "\u003Cp\u003EModerate\u0026nbsp;\u0026amp; Low risk\u003C\/p\u003E", + "label": "Storable Files", + "weight": 3 + }, + "field_synchronous_access": { + "value": "\u003Cp\u003EYes\u003C\/p\u003E", + "label": "Synchronous Access", + "weight": 9 + }, + "field_use_case": { + "value": "\u003Cp\u003ETemporary\u0026nbsp;storage\u003C\/p\u003E", + "label": "Use Case", + "weight": 4 + } + } + }, + { + "id": "3", + "title": "NYU Box", + "facet_matches": [ + "5", + "6", + "7", + "28", + "29", + "33", + "32", + "34", + "36", + "38", + "61", + "39", + "40", + "41", + "49", + "50", + "48", + "54", + "26", + "23", + "22", + "24", + "25", + "11", + "10", + "13", + "18", + "20", + "19" + ], + "summary": null, + "field_data": { + "field_alumni_access": { + "value": "\u003Cp\u003ENot Available\u003C\/p\u003E", + "label": "Alumni Access", + "weight": 10 + }, + "field_backup": { + "value": "\u003Cp dir=\u0022ltr\u0022\u003ERetains up to 100 previous versions of a single file\u003C\/p\u003E", + "label": "Backup", + "weight": 11 + }, + "field_eligibility": { + "value": "\u003Cp dir=\u0022ltr\u0022\u003EFaculty, Staff, Researchers\u003C\/p\u003E", + "label": "Eligibility", + "weight": 7 + }, + "field_limitations": { + "value": "\u003Cp\u003EMax upload is 50 GB for an single file\u003C\/p\u003E", + "label": "Limitations", + "weight": 5 + }, + "field_links": { + "value": "\u003Cp\u003E\u003Ca href=\u0022https:\/\/www.nyu.edu\/life\/information-technology\/communication-and-collaboration\/document-collaboration-and-sharing\/nyu-box.html\u0022\u003ENYU Box\u003C\/a\u003E\u003C\/p\u003E", + "label": "Links", + "weight": 2 + }, + "field_permission_settings": { + "value": "\u003Cp dir=\u0022ltr\u0022\u003EPermissions granted by NYU IT Admin\u003C\/p\u003E", + "label": "Permission Settings", + "weight": 6 + }, + "field_storable_files": { + "value": "\u003Cp dir=\u0022ltr\u0022\u003EHigh, Moderate, \u0026amp; Low Risk\u003C\/p\u003E", + "label": "Storable Files", + "weight": 3 + }, + "field_synchronous_access": { + "value": "\u003Cp dir=\u0022ltr\u0022\u003EUp to 20 users can edit and comment simultaneously\u003C\/p\u003E", + "label": "Synchronous Access", + "weight": 9 + }, + "field_use_case": { + "value": "\u003Cp dir=\u0022ltr\u0022\u003EStorage of NYU data with high security \u0026amp; the ability to collaborate with external associates\u003C\/p\u003E", + "label": "Use Case", + "weight": 4 + } + } + }, + { + "id": "2", + "title": "NYU Google Drive", + "facet_matches": [ + "5", + "6", + "28", + "29", + "30", + "33", + "36", + "38", + "61", + "39", + "40", + "41", + "49", + "50", + "48", + "54", + "26", + "23", + "22", + "24", + "25", + "11", + "10", + "13", + "18", + "20", + "19" + ], + "summary": null, + "field_data": { + "field_alumni_access": { + "value": "\u003Cp dir=\u0022ltr\u0022\u003E\u003Cstrong\u003EMy Drive:\u003C\/strong\u003E Available\u0026nbsp;\u003Cbr\u003E\u003Cstrong\u003EShared drives:\u0026nbsp;\u003C\/strong\u003ENot Available\u003C\/p\u003E", + "label": "Alumni Access", + "weight": 10 + }, + "field_backup": { + "value": "\u003Cp dir=\u0022ltr\u0022\u003ERetains last 30 days or 100 revisions\u003C\/p\u003E", + "label": "Backup", + "weight": 11 + }, + "field_eligibility": { + "value": "\u003Cp dir=\u0022ltr\u0022\u003EFaculty, Staff, Students, Researchers\u003C\/p\u003E", + "label": "Eligibility", + "weight": 7 + }, + "field_limitations": { + "value": "\u003Cp dir=\u0022ltr\u0022\u003EMy Drive: max storage is 20 GB\u003Cbr\u003EShared Drives: max storage TBD\u003C\/p\u003E", + "label": "Limitations", + "weight": 5 + }, + "field_links": { + "value": "\u003Cp\u003E\u003Ca href=\u0022https:\/\/www.nyu.edu\/life\/information-technology\/communication-and-collaboration\/document-collaboration-and-sharing\/nyu-drive.html\u0022\u003ENYU Drive\u003C\/a\u003E\u003C\/p\u003E", + "label": "Links", + "weight": 2 + }, + "field_permission_settings": { + "value": "\u003Cp\u003EView, comment, edit and temp access to comment and view\u003C\/p\u003E", + "label": "Permission Settings", + "weight": 6 + }, + "field_storable_files": { + "value": "\u003Cp dir=\u0022ltr\u0022\u003EModerate \u0026amp; Low Risk\u003C\/p\u003E", + "label": "Storable Files", + "weight": 3 + }, + "field_synchronous_access": { + "value": "\u003Cp dir=\u0022ltr\u0022\u003EUp to 100 users can edit \u0026amp; comment simultaneously\u003C\/p\u003E", + "label": "Synchronous Access", + "weight": 9 + }, + "field_use_case": { + "value": "\u003Cp\u003EStorage of NYU data with moderate security \u0026amp; the ability to collaborate with external associates\u003Cbr\u003E\u0026nbsp;\u003C\/p\u003E", + "label": "Use Case", + "weight": 4 + } + } + }, + { + "id": "21", + "title": "NYU Shared Google Drive", + "facet_matches": [ + "5", + "6", + "28", + "29", + "33", + "32", + "34", + "36", + "38", + "61", + "39", + "40", + "41", + "49", + "50", + "48", + "54", + "55", + "23", + "22", + "24", + "25", + "10", + "13", + "18", + "20", + "19" + ], + "summary": null, + "field_data": { + "field_alumni_access": { + "value": "\u003Cp\u003E\u003Cstrong\u003EMy Drive:\u003C\/strong\u003E Available\u0026nbsp;\u003Cbr\u003E\u003Cstrong\u003EShared drives:\u0026nbsp;\u003C\/strong\u003ENot Available\u003C\/p\u003E", + "label": "Alumni Access", + "weight": 10 + }, + "field_backup": { + "value": "\u003Cp\u003ERetains last 30 days or 100 revisions\u003C\/p\u003E", + "label": "Backup", + "weight": 11 + }, + "field_eligibility": { + "value": "\u003Cp\u003EFaculty, Staff, Students, Researchers\u003C\/p\u003E", + "label": "Eligibility", + "weight": 7 + }, + "field_limitations": { + "value": "\u003Cp\u003EMy Drive: max storage is 20 GB\u003Cbr\u003EShared Drives: max storage TBD\u003C\/p\u003E", + "label": "Limitations", + "weight": 5 + }, + "field_links": { + "value": "\u003Cp\u003E\u003Ca href=\u0022https:\/\/www.nyu.edu\/life\/information-technology\/communication-and-collaboration\/document-collaboration-and-sharing\/nyu-drive.html\u0022\u003ENYU Drive\u003C\/a\u003E\u003C\/p\u003E", + "label": "Links", + "weight": 2 + }, + "field_permission_settings": { + "value": "\u003Cp\u003EView, comment, edit and temp access to comment and view\u003C\/p\u003E", + "label": "Permission Settings", + "weight": 6 + }, + "field_storable_files": { + "value": "\u003Cp\u003EModerate \u0026amp; Low Risk\u003C\/p\u003E", + "label": "Storable Files", + "weight": 3 + }, + "field_synchronous_access": { + "value": "\u003Cp\u003EUp to 100 users can edit \u0026amp; comment simultaneously\u003C\/p\u003E", + "label": "Synchronous Access", + "weight": 9 + }, + "field_use_case": { + "value": "\u003Cp\u003EStorage of NYU data with moderate security \u0026amp; the ability to collaborate with external associates\u003C\/p\u003E", + "label": "Use Case", + "weight": 4 + } + } + }, + { + "id": "7", + "title": "NYU Stream", + "facet_matches": ["5", "10", "13", "14"], + "summary": null, + "field_data": { + "field_alumni_access": { + "value": "\u003Cp dir=\u0022ltr\u0022\u003ENot Available\u003C\/p\u003E", + "label": "Alumni Access", + "weight": 10 + }, + "field_backup": { + "value": "\u003Cp\u003EIndefinite\u003C\/p\u003E", + "label": "Backup", + "weight": 11 + }, + "field_eligibility": { + "value": "\u003Cp\u003EStudents, Faculty, Staff\u003Cbr\u003E\u0026nbsp;\u003C\/p\u003E", + "label": "Eligibility", + "weight": 7 + }, + "field_limitations": { + "value": "\u003Cp\u003EUser must have nyu.edu account; Student must be actively enrolled\u003Cbr\u003E\u0026nbsp;\u003C\/p\u003E", + "label": "Limitations", + "weight": 5 + }, + "field_links": { + "value": "\u003Cp\u003E\u003Ca href=\u0022https:\/\/www.nyu.edu\/life\/information-technology\/teaching-and-learning-services\/instructional-media\/nyu-stream.html\u0022\u003ENYU Stream\u003C\/a\u003E\u003C\/p\u003E", + "label": "Links", + "weight": 2 + }, + "field_permission_settings": { + "value": "\u003Cp dir=\u0022ltr\u0022\u003EOptions to restrict access to content by individual or group\u003C\/p\u003E", + "label": "Permission Settings", + "weight": 6 + }, + "field_storable_files": { + "value": "\u003Cp\u003ELow Risk\u003C\/p\u003E", + "label": "Storable Files", + "weight": 3 + }, + "field_synchronous_access": { + "value": "\u003Cp dir=\u0022ltr\u0022\u003ENot Available\u003C\/p\u003E", + "label": "Synchronous Access", + "weight": 9 + }, + "field_use_case": { + "value": "\u003Cp dir=\u0022ltr\u0022\u003EVideo and audio\u003C\/p\u003E", + "label": "Use Case", + "weight": 4 + } + } + }, + { + "id": "19", + "title": "Qualtrics", + "facet_matches": [ + "32", + "40", + "48", + "54", + "5", + "28", + "30", + "29", + "26", + "24", + "10", + "13", + "18", + "20" + ], + "summary": null, + "field_data": { + "field_alumni_access": { + "value": "\u003Cp\u003EAvailable\u003C\/p\u003E", + "label": "Alumni Access", + "weight": 10 + }, + "field_backup": { + "value": "\u003Cp\u003EYes, backed up daily by Qualtrics\u003C\/p\u003E", + "label": "Backup", + "weight": 11 + }, + "field_eligibility": { + "value": "\u003Cp\u003ECurrent Faculty, Retired Faculty, Staff, Students \u0026amp; Researchers\u003C\/p\u003E", + "label": "Eligibility", + "weight": 7 + }, + "field_limitations": { + "value": "\u003Cp\u003ENo limit for storage, 10 GB export limit per CSV file\u003C\/p\u003E", + "label": "Limitations", + "weight": 5 + }, + "field_links": { + "value": "\u003Cp\u003E\u003Ca href=\u0022https:\/\/www.nyu.edu\/life\/information-technology\/research-computing-services\/research-data-and-tools\/nyu-survey-service-qualtrics.html\u0022\u003Enyu.qualtrics.com\u003C\/a\u003E\u003C\/p\u003E", + "label": "Links", + "weight": 2 + }, + "field_permission_settings": { + "value": "\u003Cp\u003EOne owner, adjustable collaboration permissions for teamwork\u003C\/p\u003E", + "label": "Permission Settings", + "weight": 6 + }, + "field_storable_files": { + "value": "\u003Cp\u003ELow Risk\u003C\/p\u003E", + "label": "Storable Files", + "weight": 3 + }, + "field_synchronous_access": { + "value": "\u003Cp\u003EYes\u003C\/p\u003E", + "label": "Synchronous Access", + "weight": 9 + }, + "field_use_case": { + "value": "\u003Cp\u003ETo create and administer web surveys for research, teaching and administrative purposes\u003C\/p\u003E", + "label": "Use Case", + "weight": 4 + } + } + }, + { + "id": "18", + "title": "REDCap", + "facet_matches": [ + "32", + "40", + "54", + "5", + "6", + "7", + "28", + "29", + "26", + "24", + "25", + "10", + "13", + "18", + "20" + ], + "summary": null, + "field_data": { + "field_alumni_access": { + "value": "\u003Cp\u003ENot Available\u003C\/p\u003E", + "label": "Alumni Access", + "weight": 10 + }, + "field_backup": { + "value": "\u003Cp\u003EYes, backed up daily\u003C\/p\u003E", + "label": "Backup", + "weight": 11 + }, + "field_eligibility": { + "value": "\u003Cp\u003EFaculty, Research staff, Student research affiliates \u0026amp; External research collaborators\u003C\/p\u003E", + "label": "Eligibility", + "weight": 7 + }, + "field_limitations": { + "value": "\u003Cp\u003ESmall to medium sized projects\u003C\/p\u003E", + "label": "Limitations", + "weight": 5 + }, + "field_links": { + "value": "\u003Cp\u003E\u003Ca href=\u0022https:\/\/www.nyu.edu\/life\/information-technology\/research-computing-services\/research-data-and-tools\/redcap.html\u0022\u003Eredcap.nyu.edu\u003C\/a\u003E\u003C\/p\u003E", + "label": "Links", + "weight": 2 + }, + "field_permission_settings": { + "value": "\u003Cp\u003ECustomizable rights, roles and access to data can be given for collaborators with an approved NYU REDCap account\u003C\/p\u003E", + "label": "Permission Settings", + "weight": 6 + }, + "field_storable_files": { + "value": "\u003Cp\u003EHigh, Moderate \u0026amp; Low Risk\u003C\/p\u003E", + "label": "Storable Files", + "weight": 3 + }, + "field_synchronous_access": { + "value": "\u003Cp\u003EYes\u003Cbr\u003E\u0026nbsp;\u003C\/p\u003E", + "label": "Synchronous Access", + "weight": 9 + }, + "field_use_case": { + "value": "\u003Cp\u003EA secure web application for managing online surveys that involves collection of High Risk data and in compliance with multiple government standards\u003C\/p\u003E", + "label": "Use Case", + "weight": 4 + } + } + }, + { + "id": "13", + "title": "Research Archival Storage", + "facet_matches": ["5", "6", "28", "29", "10", "13", "14"], + "summary": null, + "field_data": { + "field_alumni_access": { + "value": "\u003Cp\u003EAvailable\u003C\/p\u003E", + "label": "Alumni Access", + "weight": 10 + }, + "field_backup": { + "value": "\u003Cp\u003EYes, 30 day retention\u003C\/p\u003E", + "label": "Backup", + "weight": 11 + }, + "field_eligibility": { + "value": "\u003Cp\u003EFaculty sponsored\u003C\/p\u003E", + "label": "Eligibility", + "weight": 7 + }, + "field_limitations": { + "value": "\u003Cp\u003E2TB limit\u003C\/p\u003E", + "label": "Limitations", + "weight": 5 + }, + "field_links": { + "value": "\u003Cp\u003E\u003Ca href=\u0022http:\/\/hpc.nyu.edu\/\u0022\u003Ehpc.nyu.edu\u003C\/a\u003E\u003C\/p\u003E", + "label": "Links", + "weight": 2 + }, + "field_permission_settings": { + "value": "\u003Cp\u003EUser controlled using facl\u003C\/p\u003E", + "label": "Permission Settings", + "weight": 6 + }, + "field_storable_files": { + "value": "\u003Cp\u003EModerate\u0026nbsp;\u0026amp; Low risk\u003C\/p\u003E", + "label": "Storable Files", + "weight": 3 + }, + "field_synchronous_access": { + "value": "\u003Cp\u003EYes\u003C\/p\u003E", + "label": "Synchronous Access", + "weight": 9 + }, + "field_use_case": { + "value": "\u003Cp\u003ELong term storage\u003C\/p\u003E", + "label": "Use Case", + "weight": 4 + } + } + }, + { + "id": "22", + "title": "Research Data Lake (Pilot)", + "facet_matches": ["5", "6", "28", "32", "38", "54", "24", "10"], + "summary": null, + "field_data": { + "field_alumni_access": { + "value": "\u003Cp\u003ENot Available\u003C\/p\u003E", + "label": "Alumni Access", + "weight": 10 + }, + "field_backup": { + "value": "\u003Cp\u003EYes, available as configurable snapshotting\u003C\/p\u003E", + "label": "Backup", + "weight": 11 + }, + "field_eligibility": { + "value": "\u003Cp\u003EFaculty, and Researchers\u003C\/p\u003E", + "label": "Eligibility", + "weight": 7 + }, + "field_limitations": { + "value": "\u003Cp\u003EDuring pilot phase, projects must be approved by RTS staff\u003C\/p\u003E", + "label": "Limitations", + "weight": 5 + }, + "field_links": { + "value": "\u003Cp\u003Edatalake.nyu.edu ( dummy link )\u003C\/p\u003E", + "label": "Links", + "weight": 2 + }, + "field_permission_settings": { + "value": "\u003Cp\u003EProject dependent, role-based permissions. Users added by PI request\u003C\/p\u003E", + "label": "Permission Settings", + "weight": 6 + }, + "field_storable_files": { + "value": "\u003Cp\u003EModerate\u0026nbsp;\u0026amp; Low risk\u003C\/p\u003E", + "label": "Storable Files", + "weight": 3 + }, + "field_synchronous_access": { + "value": "\u003Cp\u003EYes\u003C\/p\u003E", + "label": "Synchronous Access", + "weight": 9 + }, + "field_use_case": { + "value": "\u003Cp\u003EHigh-performance storage for active research datasets with multiple users. Supports structured and semi-structured data\u003C\/p\u003E", + "label": "Use Case", + "weight": 4 + } + } + }, + { + "id": "4", + "title": "Research Workspace", + "facet_matches": [ + "5", + "6", + "28", + "33", + "32", + "34", + "38", + "61", + "39", + "41", + "49", + "50", + "48", + "54", + "56", + "26", + "24", + "25", + "11", + "10", + "13", + "14", + "18", + "20" + ], + "summary": null, + "field_data": { + "field_alumni_access": { + "value": "\u003Cp\u003ENot Available\u003C\/p\u003E", + "label": "Alumni Access", + "weight": 10 + }, + "field_backup": { + "value": "\u003Cp\u003ERetains last 30 days\u003C\/p\u003E", + "label": "Backup", + "weight": 11 + }, + "field_eligibility": { + "value": "\u003Cp dir=\u0022ltr\u0022\u003EFaculty; or Staff\/Student with full-time faculty sponsorship\u003C\/p\u003E", + "label": "Eligibility", + "weight": 7 + }, + "field_limitations": { + "value": "\u003Cp dir=\u0022ltr\u0022\u003ERequires faculty, staff; or student with full-time NYU faculty sponsorship\u003C\/p\u003E", + "label": "Limitations", + "weight": 5 + }, + "field_links": { + "value": "\u003Cp\u003E\u003Ca href=\u0022https:\/\/www.nyu.edu\/life\/information-technology\/research-computing-services\/research-data-and-tools\/research-workspace.html\u0022\u003EResearch Workspace\u003C\/a\u003E\u003C\/p\u003E", + "label": "Links", + "weight": 2 + }, + "field_permission_settings": { + "value": "\u003Cp dir=\u0022ltr\u0022\u003EOptions for fully private, read only, or editable\u003C\/p\u003E", + "label": "Permission Settings", + "weight": 6 + }, + "field_storable_files": { + "value": "\u003Cp dir=\u0022ltr\u0022\u003EModerate \u0026amp; Low Risk\u003C\/p\u003E", + "label": "Storable Files", + "weight": 3 + }, + "field_synchronous_access": { + "value": "\u003Cp\u003ENot Available\u003C\/p\u003E", + "label": "Synchronous Access", + "weight": 9 + }, + "field_use_case": { + "value": "\u003Cp dir=\u0022ltr\u0022\u003EStorage of NYU research data \u0026amp; collaboration with non-NYU researchers\u003C\/p\u003E", + "label": "Use Case", + "weight": 4 + } + } + }, + { + "id": "6", + "title": "Secure Research Data Environments", + "facet_matches": [ + "5", + "6", + "7", + "8", + "28", + "29", + "33", + "32", + "35", + "34", + "38", + "61", + "40", + "41", + "49", + "50", + "48", + "51", + "54", + "60", + "59", + "56", + "55", + "26", + "24", + "25", + "11", + "10", + "13", + "14", + "18", + "20" + ], + "summary": null, + "field_data": { + "field_alumni_access": { + "value": "\u003Cp\u003EAvailable with faculty sponsorship\u003C\/p\u003E", + "label": "Alumni Access", + "weight": 10 + }, + "field_backup": { + "value": "\u003Cp dir=\u0022ltr\u0022\u003ENot Available\u003C\/p\u003E", + "label": "Backup", + "weight": 11 + }, + "field_eligibility": { + "value": "\u003Cp\u003EFaculty; or Staff\/Student with full-time faculty sponsorship\u003C\/p\u003E", + "label": "Eligibility", + "weight": 7 + }, + "field_limitations": { + "value": "\u003Cp dir=\u0022ltr\u0022\u003ERequires secure data stewardship knowledge\u003C\/p\u003E", + "label": "Limitations", + "weight": 5 + }, + "field_links": { + "value": "\u003Cp\u003E\u003Ca href=\u0022https:\/\/sites.google.com\/nyu.edu\/nyu-hpc\/training-support\/supported-research-initiatives\/secure-research-data-environment-srde\u0022\u003ESRDE Pilot\u003C\/a\u003E\u003C\/p\u003E", + "label": "Links", + "weight": 2 + }, + "field_permission_settings": { + "value": "\u003Cp dir=\u0022ltr\u0022\u003EProject dependent, role-based permissions, requires data steward role\u003C\/p\u003E", + "label": "Permission Settings", + "weight": 6 + }, + "field_storable_files": { + "value": "\u003Cp dir=\u0022ltr\u0022\u003EHigh, Moderate, \u0026amp; Low Risk\u003C\/p\u003E", + "label": "Storable Files", + "weight": 3 + }, + "field_synchronous_access": { + "value": "\u003Cp\u003ENot Available\u003C\/p\u003E", + "label": "Synchronous Access", + "weight": 9 + }, + "field_use_case": { + "value": "\u003Cp\u003EResearchers using the HPC clusters to data analysis of simulations sharing data amongst group members\u003C\/p\u003E", + "label": "Use Case", + "weight": 4 + } + } + }, + { + "id": "17", + "title": "Spatial Data Repository", + "facet_matches": [ + "33", + "34", + "36", + "40", + "41", + "38", + "49", + "50", + "48", + "59", + "5", + "28", + "30", + "29", + "22", + "24", + "25", + "10", + "13", + "19" + ], + "summary": null, + "field_data": { + "field_alumni_access": { + "value": "\u003Cp\u003ENot Available\u003C\/p\u003E", + "label": "Alumni Access", + "weight": 10 + }, + "field_backup": { + "value": "\u003Cp\u003EYes\u003C\/p\u003E", + "label": "Backup", + "weight": 11 + }, + "field_eligibility": { + "value": "\u003Cp\u003ECurrent Faculty, Staff, Students \u0026amp; Researchers\u003C\/p\u003E", + "label": "Eligibility", + "weight": 7 + }, + "field_limitations": { + "value": "\u003Cp\u003ENot Available\u003C\/p\u003E", + "label": "Limitations", + "weight": 5 + }, + "field_links": { + "value": "\u003Cp\u003E\u003Ca href=\u0022https:\/\/geo.nyu.edu\/\u0022\u003Egeo.nyu.edu\u003C\/a\u003E\u003C\/p\u003E", + "label": "Links", + "weight": 2 + }, + "field_permission_settings": { + "value": "\u003Cp\u003ENot Available\u003C\/p\u003E", + "label": "Permission Settings", + "weight": 6 + }, + "field_storable_files": { + "value": "\u003Cp\u003ELow Risk\u003C\/p\u003E", + "label": "Storable Files", + "weight": 3 + }, + "field_synchronous_access": { + "value": "\u003Cp\u003ENot Available\u003C\/p\u003E", + "label": "Synchronous Access", + "weight": 9 + }, + "field_use_case": { + "value": "\u003Cp\u003EA collection of Geospatial Data from Open Data and proprietary resources. Users can download layers and work with them in many GIS platforms\u003C\/p\u003E", + "label": "Use Case", + "weight": 4 + } + } + }, + { + "id": "16", + "title": "Ultraviolet Repository", + "facet_matches": [ + "34", + "36", + "40", + "42", + "44", + "43", + "45", + "46", + "41", + "39", + "38", + "49", + "50", + "48", + "59", + "58", + "53", + "55", + "5", + "28", + "30", + "29", + "22", + "10", + "13", + "19" + ], + "summary": null, + "field_data": { + "field_alumni_access": { + "value": "\u003Cp\u003EAvailable\u003C\/p\u003E", + "label": "Alumni Access", + "weight": 10 + }, + "field_backup": { + "value": "\u003Cp\u003EYes, backed up as different versions\u003C\/p\u003E", + "label": "Backup", + "weight": 11 + }, + "field_eligibility": { + "value": "\u003Cp\u003EFaculty, Staff, Students \u0026amp; Researchers\u003C\/p\u003E", + "label": "Eligibility", + "weight": 7 + }, + "field_limitations": { + "value": "\u003Cp\u003ERecommended to 100 files or 50GB (per file), contact repository team \u003Ca href=\u0022mailto:uv@nyu.edu\u0022\u003Euv@nyu.edu\u003C\/a\u003E if exceeds this limit\u003C\/p\u003E", + "label": "Limitations", + "weight": 5 + }, + "field_links": { + "value": "\u003Cp\u003E\u003Ca href=\u0022https:\/\/www.nyu.edu\/life\/information-technology\/web-and-digital-publishing\/collections-and-repositories\/ultraviolet.html\u0022\u003Eultraviolet.library.nyu.edu\u003C\/a\u003E\u003C\/p\u003E", + "label": "Links", + "weight": 2 + }, + "field_permission_settings": { + "value": "\u003Cp\u003EPublic visibility by default\u003C\/p\u003E", + "label": "Permission Settings", + "weight": 6 + }, + "field_storable_files": { + "value": "\u003Cp\u003ELow Risk\u003C\/p\u003E", + "label": "Storable Files", + "weight": 3 + }, + "field_synchronous_access": { + "value": "\u003Cp\u003ENot Available\u003C\/p\u003E", + "label": "Synchronous Access", + "weight": 9 + }, + "field_use_case": { + "value": "\u003Cp\u003ETo deposit scholarly materials as open access publication and long-term preservation\u003C\/p\u003E", + "label": "Use Case", + "weight": 4 + } + } + } +] diff --git a/src/pages/index.module.css b/src/pages/index.module.css index 617635fd8..57faef313 100644 --- a/src/pages/index.module.css +++ b/src/pages/index.module.css @@ -4,10 +4,10 @@ */ .heroBanner { - padding: 4rem 0; - text-align: center; position: relative; + padding: 4rem 0; overflow: hidden; + text-align: center; } @media screen and (width <= 996px) { diff --git a/src/pages/index.tsx b/src/pages/index.tsx index cd86ce3d8..a12ba314d 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -1,3 +1,4 @@ +import Link from "@docusaurus/Link"; import useDocusaurusContext from "@docusaurus/useDocusaurusContext"; import HomepageFeatures from "@site/src/components/HomepageFeatures"; import Heading from "@theme/Heading"; @@ -30,6 +31,33 @@ export default function Home() {
+ +
+
+
+
+
+ + Find the Right Storage for Your Research + +

+ Not sure which storage solution is right for your research + data? The Storage Finder tool helps you identify the best + storage options based on your specific needs. Answer a few + simple questions about your data requirements, and + we’ll help you make the right choice. +

+ + Find Your Storage Solution + +
+
+
+
+
); diff --git a/src/pages/storage-finder.module.css b/src/pages/storage-finder.module.css new file mode 100644 index 000000000..c05f03435 --- /dev/null +++ b/src/pages/storage-finder.module.css @@ -0,0 +1,480 @@ +/** @author Ka Pui (August) Cheung */ + +/* Hide scroll indicators by default (only show on mobile) */ +.scrollIndicator { + display: none; +} + +.mainContent { + display: flex; + flex-direction: row; + gap: calc(var(--ifm-spacing-vertical) * 2); + margin-bottom: calc(var(--ifm-spacing-vertical) * 2); +} + +/* Sticky Info Bar */ +.infoBar { + position: sticky; + top: var(--ifm-navbar-height); + z-index: var(--ifm-z-index-fixed); + display: flex; + align-items: center; + justify-content: space-between; + width: 100%; + height: var(--ifm-navbar-height); + margin-bottom: calc(var(--ifm-spacing-vertical) * 2); + padding: var(--ifm-navbar-padding-vertical) + var(--ifm-navbar-padding-horizontal); + background-color: var(--ifm-color-emphasis-200); + border-radius: var(--ifm-global-radius); + transition: + background-color var(--ifm-transition-fast) + var(--ifm-transition-timing-default), + border-radius var(--ifm-transition-fast) + var(--ifm-transition-timing-default), + margin var(--ifm-transition-fast) var(--ifm-transition-timing-default), + width var(--ifm-transition-fast) var(--ifm-transition-timing-default); +} + +/* Sticky state styling - will be applied via JS */ +.infoBar.sticky { + position: sticky; + left: 0; + width: 100vw; + margin-left: calc(-50vw + 50%); + background-color: var(--ifm-navbar-background-color); + border-bottom: var(--ifm-global-border-width) solid + var(--ifm-color-emphasis-300); + border-radius: 0; + box-shadow: var(--ifm-global-shadow-lw); +} + +/* Animated title styling */ +.stickyTitle { + position: absolute; + color: var(--ifm-color-primary); + font-weight: var(--ifm-font-weight-bold); + font-size: var(--ifm-h3-font-size); + transform: translateX(-20px); + opacity: 0; + transition: + opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default), + transform var(--ifm-transition-fast) var(--ifm-transition-timing-default); + pointer-events: none; +} + +.stickyTitle.visible { + transform: translateX(0); + opacity: 1; +} + +.serviceStats { + display: flex; + flex-wrap: nowrap; /* Prevent wrapping */ + gap: calc(var(--ifm-spacing-horizontal) * 0.75); + align-items: center; + color: var(--ifm-color-emphasis-700); + font-size: calc(var(--ifm-font-size-base) * 0.9); + white-space: nowrap; /* Prevent text wrapping */ + transition: transform var(--ifm-transition-fast) + var(--ifm-transition-timing-default); +} + +/* Adjust service stats position when title is visible */ +.infoBar.sticky .serviceStats { + transform: translateX(160px); /* Make room for the title */ +} + +/* Panel Styles with Fixed Headers */ +.questionPanel, +.servicesPanel { + display: flex; + flex-direction: column; + min-width: 300px; + height: 600px; /* Fixed height for both panels */ +} + +.questionPanel { + flex: 1; +} + +.servicesPanel { + flex: 2; +} + +.panelHeader { + position: sticky; + top: 0; + display: flex; + flex-direction: column; + gap: var(--ifm-card-vertical-spacing); + padding: var(--ifm-card-horizontal-spacing) var(--ifm-card-horizontal-spacing) + var(--ifm-card-vertical-spacing) !important; + background-color: var(--ifm-card-background-color); + border-bottom: var(--ifm-global-border-width) solid + var(--ifm-color-emphasis-200); +} + +.panelTitle { + margin: 0; + font-weight: var(--ifm-font-weight-semibold); + line-height: var(--ifm-heading-line-height); +} + +.buttonRow { + display: flex; + justify-content: flex-end; + width: 100%; +} + +/* Reset scroll properties to defaults for desktop */ +.panelScrollContent { + flex: 1; + padding-top: calc(var(--ifm-spacing-vertical) * 0.5); + overflow-y: auto; + + /* Add scrollbar styling for webkit browsers */ + &::-webkit-scrollbar { + width: var(--ifm-scrollbar-size); + } + + &::-webkit-scrollbar-track { + background: var(--ifm-scrollbar-track-background-color); + border-radius: var(--ifm-global-radius); /* or 10px */ + } + + &::-webkit-scrollbar-thumb { + background: var(--ifm-scrollbar-thumb-background-color); + border-radius: var(--ifm-global-radius); /* or 10px */ + } + + &::-webkit-scrollbar-thumb:hover { + background: var(--ifm-scrollbar-thumb-hover-background-color); + } +} + +.facet { + display: flex; + flex-direction: column; + margin-bottom: calc(var(--ifm-spacing-vertical) * 1.5); +} + +.facet:last-child { + margin-bottom: 0; +} + +.facetTitle { + margin-bottom: calc(var(--ifm-spacing-vertical) * 0.5); + font-weight: var(--ifm-font-weight-semibold); + line-height: var(--ifm-heading-line-height); +} + +.facetNumber { + display: inline; + margin-right: calc(var(--ifm-spacing-horizontal) * 0.5); + color: var(--ifm-color-primary); + font-weight: var(--ifm-font-weight-bold); +} + +.choicesList { + display: flex; + flex-direction: column; + gap: calc(var(--ifm-spacing-vertical) * 0.5); + padding-left: var(--ifm-spacing-horizontal); +} + +/* Filter options for non-matching services */ +.filterOptions { + display: flex; + flex-direction: row; + gap: var(--ifm-spacing-horizontal); + align-items: center; +} + +.filterSelect { + width: 200px; + padding: calc(var(--ifm-spacing-vertical) * 0.5) + calc(var(--ifm-spacing-horizontal) * 0.5); + font-size: calc(var(--ifm-font-size-base) * 0.9); + background-color: var(--ifm-background-color); + border: var(--ifm-global-border-width) solid var(--ifm-color-emphasis-300); + border-radius: var(--ifm-global-radius); +} + +/* Service Panel Header */ +.servicesPanelHeader { + display: flex; + flex-direction: column; + gap: var(--ifm-spacing-vertical); + width: 100%; +} + +.serviceActionButtons { + display: flex; + gap: var(--ifm-spacing-horizontal); +} + +/* Service Grid */ +.serviceGrid { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); + gap: var(--ifm-global-spacing); +} + +.serviceButton { + position: relative; + display: flex; + padding: var(--ifm-global-spacing); + color: var(--ifm-color-primary-dark); + font-weight: var(--ifm-font-weight-semibold); + font-size: var(--ifm-font-size-base); + text-align: left; + background-color: color-mix( + in srgb, + var(--ifm-color-primary) 5%, + transparent + ); + border: var(--ifm-global-border-width) solid var(--ifm-color-emphasis-300); + border-radius: var(--ifm-global-radius); + cursor: pointer; + transition: all var(--ifm-transition-fast) + var(--ifm-transition-timing-default); +} + +.serviceButton:hover:not(.disabled) { + border-color: var(--ifm-color-primary); + box-shadow: var(--ifm-global-shadow-lw); +} + +.serviceButton.selected { + color: var(--ifm-color-white); + background-color: var(--ifm-color-primary); + border-color: var(--ifm-color-primary-dark); +} + +.serviceButton.disabled { + color: var(--ifm-color-emphasis-600); + background-color: var(--ifm-color-emphasis-200); + border-color: var(--ifm-color-emphasis-300); + cursor: not-allowed; + opacity: 0.5; +} + +.serviceButton.nonMatching { + color: var(--ifm-color-danger); + background-color: color-mix( + in srgb, + var(--ifm-color-danger) 10%, + transparent + ); + border-color: var(--ifm-color-emphasis-300); +} + +.serviceButton.nonMatching:hover { + background-color: color-mix( + in srgb, + var(--ifm-color-danger) 15%, + transparent + ); + border-color: var(--ifm-color-danger); + box-shadow: var(--ifm-global-shadow-lw); +} + +.serviceButton.nonMatching.selected { + color: var(--ifm-color-white); + background-color: var(--ifm-color-danger); + border-color: var(--ifm-color-danger-dark); +} + +/* Dark mode styling for non-matching service buttons */ +html[data-theme="dark"] .serviceButton.nonMatching { + color: var(--ifm-color-danger-lighter); +} + +html[data-theme="dark"] .serviceButton.nonMatching:hover { + border-color: var(--ifm-color-danger-lighter); +} + +html[data-theme="dark"] .serviceButton.nonMatching.selected { + color: var(--ifm-color-white); + border-color: var(--ifm-color-danger); +} + +/* Checkmark and other indicators */ +.serviceButton .checkmark { + position: absolute; + top: 50%; + right: var(--ifm-spacing-horizontal); + display: flex; + align-items: center; + justify-content: center; + width: 20px; + height: 20px; + color: var(--ifm-color-primary); + font-weight: var(--ifm-font-weight-bold); + background-color: var(--ifm-color-white); + border-radius: 50%; + transform: translateY(-50%); +} + +.serviceButton.nonMatching.selected .checkmark { + color: var(--ifm-color-danger); +} + +.noServicesSelected { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + padding: calc(var(--ifm-spacing-vertical) * 3) var(--ifm-spacing-horizontal); + color: var(--ifm-color-emphasis-600); +} + +.comparisonTableWrapper { + width: 100%; + overflow-x: auto; +} + +.comparisonTable { + width: 100%; + table-layout: fixed; +} + +/* Remove bottom margin from paragraphs in storage finder */ +/* stylelint-disable-next-line selector-pseudo-class-no-unknown, selector-class-pattern */ +:global(.remove-p-margin-bottom) p { + margin-bottom: 0; +} + +.attributeColumn { + width: 180px; + min-width: 180px; /* Ensure minimum width */ +} + +.attributeName { + font-weight: var(--ifm-font-weight-semibold); +} + +/* Service column sizing logic */ +.serviceColumn { + width: auto; /* Let the browser distribute width for multiple columns */ + min-width: 250px; /* Minimum width for multiple service columns */ +} + +/* Special case for a single service column */ +.singleServiceColumn { + width: 100%; /* When there's only one service column, let it expand */ +} + +/* Responsive adjustments */ +@media (width > 768px) { + .panelScrollContent { + padding-bottom: var(--ifm-card-vertical-spacing) !important; + } +} + +@media (width <= 768px) { + /* Hide info bar on mobile */ + .infoBar { + display: none; + } + + /* Change main content layout */ + .mainContent { + flex-direction: column; + gap: calc(var(--ifm-spacing-vertical) * 1.5); + } + + /* Adjust panel heights for mobile */ + .questionPanel, + .servicesPanel { + height: auto; /* Auto height instead of fixed */ + min-height: 300px; /* Minimum height on mobile */ + } + + /* Panel content horizontal scrolling with snap */ + .panelScrollContent { + padding: var(--ifm-spacing-vertical) + calc(var(--ifm-spacing-horizontal) * 0.5); + padding-bottom: calc(var(--ifm-spacing-vertical) * 1.5); + overflow: auto hidden; + -webkit-overflow-scrolling: touch; + scrollbar-width: thin; + scroll-snap-type: x proximity; /* Changed from mandatory to proximity */ + } + + /* Questions horizontal layout */ + .questionPanel .panelScrollContent { + display: flex; + flex-direction: row; + padding-bottom: var(--ifm-spacing-vertical); + } + + /* Only apply scroll snap to middle elements, not first or last */ + .panelScrollContent .facet { + min-width: 280px; + margin-right: calc(var(--ifm-spacing-horizontal) * 1.5); + margin-bottom: 0; + } + + .panelScrollContent .facet:not(:first-child, :last-child) { + scroll-snap-align: center; + } + + /* Mobile service grid - 5 services per column with horizontal scrolling */ + .serviceGrid { + display: flex; + flex-flow: column wrap; + gap: calc(var(--ifm-global-spacing) * 0.75); + width: max-content; + max-height: 450px; /* Adjusted to fit exactly 5 items */ + } + + /* Service buttons for mobile */ + .serviceButton { + flex: 0 0 auto; + width: 200px; + min-width: 200px; + height: 70px; /* Adjusted height for 5 items */ + margin-bottom: 0; + } + + /* Mobile scroll indicators */ + .scrollIndicator { + display: flex; + align-items: center; + justify-content: center; + margin-top: calc(var(--ifm-spacing-vertical) * 0.5); + padding: calc(var(--ifm-spacing-vertical) * 0.5) + calc(var(--ifm-spacing-horizontal) * 0.5); + color: var(--ifm-color-emphasis-600); + font-size: calc(var(--ifm-font-size-base) * 0.8); + text-align: center; + } +} + +/* Common styles for scroll indicator SVGs */ +.scrollIndicator svg, +.tableScrollIndicator svg { + width: 16px; + height: 16px; + margin: 0 calc(var(--ifm-spacing-horizontal) * 0.25); +} + +/* Comparison Table Section */ +.comparisonTableSection { + scroll-margin-top: calc( + var(--ifm-navbar-height) + var(--ifm-spacing-vertical) + ); +} + +/* Table scroll indicator - always visible */ +.tableScrollIndicator { + display: flex; + align-items: center; + justify-content: center; + padding: calc(var(--ifm-spacing-vertical) * 0.5) 0; + color: var(--ifm-color-emphasis-600); + font-size: calc(var(--ifm-font-size-base) * 0.85); + text-align: center; +} diff --git a/src/pages/storage-finder.tsx b/src/pages/storage-finder.tsx new file mode 100644 index 000000000..c8ede9aa8 --- /dev/null +++ b/src/pages/storage-finder.tsx @@ -0,0 +1,736 @@ +/** @author Ka Pui (August) Cheung */ + +import Heading from "@theme/Heading"; +import Layout from "@theme/Layout"; +import { ChevronLeft, ChevronRight } from "lucide-react"; +import { useCallback, useEffect, useMemo, useRef, useState } from "react"; +import { useIntersection } from "react-use"; + +import DocumentFooter from "../components/DocumentFooter"; +import InfoButton from "../components/InfoButton"; +import SelectableButton from "../components/SelectableButton"; +import Tooltip, { TooltipDisabledTarget } from "../components/Tooltip"; +import TooltipProvider from "../components/TooltipProvider"; +import facetTree from "../data/storage-finder/facet-tree.json"; +import serviceList from "../data/storage-finder/service-list.json"; +import styles from "./storage-finder.module.css"; + +interface Choice { + id: string; + name: string; + control_type: string; + parent: string; + weight: string; + selected: boolean; + description: string | null; +} + +interface Facet { + id: string; + name: string; + control_type: string; + parent: string; + weight: string; + selected: boolean; + description: string | null; + choices: Choice[]; +} + +interface FieldData { + value?: string; + label: string; + weight: number; +} + +interface ServiceFieldData { + [key: string]: FieldData; + field_eligibility: FieldData; + field_limitations: FieldData; + field_use_case: FieldData; + field_storable_files: FieldData; + field_permission_settings: FieldData; + field_links: FieldData; + field_synchronous_access: FieldData; + field_alumni_access: FieldData; + field_backup: FieldData; +} + +interface Service { + id: string; + title: string; + facet_matches: string[]; + summary: null; + field_data: ServiceFieldData; +} + +export default function StorageFinderPage() { + const [selectedFacets, setSelectedFacets] = useState< + Record + >({}); + const [selectedServices, setSelectedServices] = useState([]); + const [nonMatchingServiceDisplay, setNonMatchingServiceDisplay] = + useState("show-disabled"); + const comparisonSectionRef = useRef(null); + const infoBarRef = useRef(null); + const infoBarStickyDetectorRef = useRef(null); + const [isInfoBarSticky, setIsInfoBarSticky] = useState(false); + const [isComparisonSectionVisible, setIsComparisonSectionVisible] = + useState(false); + + /** + * An intersection observer that detects when the info bar should become + * sticky. + */ + const infoBarStickyDetectorIntersection = useIntersection( + infoBarStickyDetectorRef as React.RefObject, + { + rootMargin: "-60px 0px 0px 0px", // Negative top margin triggers earlier + threshold: 0, + }, + ); + + /** + * An intersection observer that detects when the comparison section is + * visible. + */ + const comparisonSectionIntersection = useIntersection( + comparisonSectionRef as React.RefObject, + { threshold: 0.5 }, + ); + + // Update sticky state based on intersection + useEffect(() => { + if (infoBarStickyDetectorIntersection) + setIsInfoBarSticky(!infoBarStickyDetectorIntersection.isIntersecting); + }, [infoBarStickyDetectorIntersection]); + + // Update comparison section visibility state + useEffect(() => { + if (comparisonSectionIntersection) + setIsComparisonSectionVisible( + comparisonSectionIntersection.isIntersecting, + ); + }, [comparisonSectionIntersection]); + + // Filter services based on selected facet options + const filteredServices = serviceList.filter((service: Service) => { + if (Object.keys(selectedFacets).length === 0) return true; + return Object.entries(selectedFacets).every(([, choiceIds]) => + // For each facet, at least one selected choice must match + choiceIds.some((choiceId) => service.facet_matches.includes(choiceId)), + ); + }); + + // Get all unique attribute fields from the service list + const attributeFields = useMemo(() => { + const fields: { key: string; label: string }[] = []; + const seenKeys = new Set(); + + for (const service of serviceList as Service[]) { + if (!service.field_data) continue; + + for (const [key, value] of Object.entries(service.field_data)) { + if (!seenKeys.has(key) && value?.label) { + seenKeys.add(key); + fields.push({ + key, + label: value.label, + }); + } + } + } + + // Sort by weight if available + return fields.sort((a, b) => { + const serviceWithFieldA = (serviceList as Service[]).find( + (s) => s.field_data && a.key in s.field_data, + ); + const serviceWithFieldB = (serviceList as Service[]).find( + (s) => s.field_data && b.key in s.field_data, + ); + + const weightA = + serviceWithFieldA?.field_data[a.key as keyof ServiceFieldData] + ?.weight ?? 999; + const weightB = + serviceWithFieldB?.field_data[b.key as keyof ServiceFieldData] + ?.weight ?? 999; + + return weightA - weightB; + }); + }, []); + + const visibleFacets = facetTree; + + // Handle facet change for checkbox-style radio buttons + const handleFacetChange = useCallback( + (facetId: string, choiceId: string, isChecked: boolean) => { + // Get the current facet to determine its control type + const currentFacet = visibleFacets.find( + (facet: Facet) => facet.id === facetId, + ); + const isRadioControl = currentFacet?.control_type === "radio"; + + // Calculate the new filters + const newFilters = { ...selectedFacets }; + + if (isChecked) { + // For radio buttons, replace any existing selection + // For checkboxes, add to existing selections + if (isRadioControl) { + newFilters[facetId] = [choiceId]; + } else { + if (!newFilters[facetId]) { + newFilters[facetId] = []; + } + newFilters[facetId].push(choiceId); + } + } else { + // For both types, remove the selection if unchecked + if (newFilters[facetId]) { + newFilters[facetId] = newFilters[facetId].filter( + (id) => id !== choiceId, + ); + if (newFilters[facetId].length === 0) { + delete newFilters[facetId]; + } + } + } + + // Update selectedFacets + setSelectedFacets(newFilters); + + // Only auto-deselect services if we're not in "show-enabled" mode + if (nonMatchingServiceDisplay !== "show-enabled") { + // Calculate which services are valid with the new filters + const newFilteredServices = serviceList.filter((service: Service) => { + if (Object.keys(newFilters).length === 0) return true; + return Object.entries(newFilters).every(([, filterChoiceIds]) => + filterChoiceIds.some((filterChoiceId) => + service.facet_matches.includes(filterChoiceId), + ), + ); + }); + + // Clear selections for services that are no longer valid using the functional form + // This ensures we're working with the most up-to-date state + setSelectedServices((previous) => + previous.filter((serviceId) => + newFilteredServices.some( + (service: Service) => service.id === serviceId, + ), + ), + ); + } + }, + [selectedFacets, nonMatchingServiceDisplay, visibleFacets], + ); + + const toggleServiceSelection = useCallback((serviceId: string) => { + setSelectedServices((previous) => + previous.includes(serviceId) + ? previous.filter((id) => id !== serviceId) + : [...previous, serviceId], + ); + }, []); + + const clearAnswers = useCallback(() => { + setSelectedFacets({}); + }, []); + + const selectAllServices = useCallback(() => { + setSelectedServices(filteredServices.map((service) => service.id)); + }, [filteredServices]); + + const scrollToComparison = useCallback(() => { + if (comparisonSectionRef.current) + comparisonSectionRef.current.scrollIntoView({ behavior: "smooth" }); + }, []); + + const isServiceDisabled = useCallback( + (serviceId: string) => + !filteredServices.some((service) => service.id === serviceId), + [filteredServices], + ); + + const isClearAnswersDisabled = useMemo( + () => Object.keys(selectedFacets).length === 0, + [selectedFacets], + ); + + const isSelectAllDisabled = useMemo(() => { + if (filteredServices.length === 0) return true; + return filteredServices.every((service) => + selectedServices.includes(service.id), + ); + }, [filteredServices, selectedServices]); + + const isClearSelectionsDisabled = useMemo( + () => selectedServices.length === 0, + [selectedServices], + ); + + return ( + + + {/* Main content container */} +
+ {/* Title - Always above the info bar */} + + Research Data Storage Finder + + + {/* Element for detecting when the info bar should become sticky */} +
+ + {/* Sticky Info Bar - No container class when sticky */} +
+ {/* Animated title that appears when sticky */} +
+ Storage Finder +
+ +
+ {serviceList.length} Services In Total + + {/* Only show available count when filters are applied */} + {Object.keys(selectedFacets).length > 0 && ( + <> + + + {filteredServices.length} Available Under Current Filters + + + )} + + + + {selectedServices.length === 0 + ? "None Selected" + : `${selectedServices.length} Selected`} + +
+ +
+ {/* Show scroll to details/comparison when services are selected and comparison section not visible */} + {selectedServices.length > 0 && + (isComparisonSectionVisible ? ( + + ) : ( + + ))} +
+
+ +
+ {/* Left Panel - Questionnaire */} +
+
+ + Answer these questions to filter services that are suitable + for your needs. + + +
+ {isClearAnswersDisabled ? ( + + + + + + ) : ( + + )} +
+
+
+ {visibleFacets.map((facet: Facet, index: number) => ( +
+
+ {index + 1}. + {facet.name} + {facet.description && ( + + )} +
+
+ {facet.choices.map((choice) => { + const isChecked = + selectedFacets[facet.id]?.includes(choice.id) ?? + false; + + return ( + + handleFacetChange(facet.id, value, checked) + } + /> + ); + })} +
+
+ ))} +
+
+
+
+ + {/* Right Panel - Service Selection */} +
+
+
+ + Select service(s) you would like to view details or compare. + + +
+ + +
+ +
+
+ {isSelectAllDisabled ? ( + + + + + + ) : ( + + )} + + {isClearSelectionsDisabled ? ( + + + + + + ) : ( + + )} +
+
+
+
+
+
+ {serviceList.map((service: Service) => { + const isSelected = selectedServices.includes(service.id); + const isNonMatching = isServiceDisabled(service.id); + + // Handle different display options for non-matching services + if (isNonMatching) { + // Hide non-matching services + if (nonMatchingServiceDisplay === "hide") return null; + + // Show but disable non-matching services + if (nonMatchingServiceDisplay === "show-disabled") + return ( + + + + ); + + // Show but highlight non-matching services + if (nonMatchingServiceDisplay === "show-enabled") + return ( + + + + ); + } + + // Regular matching services + return ( + + ); + })} +
+
+
+
+
+
+ + {/* Comparison Section */} +
+ {selectedServices.length > 0 ? ( + <> + + {selectedServices.length === 1 + ? "Service Details" + : "Service Details and Comparison"} + + +
+
+ +
+ + + + + {selectedServices.map((serviceId) => { + const service = serviceList.find( + (s) => s.id === serviceId, + ); + return ( + + ); + })} + + + + {attributeFields.map((field) => ( + + + {selectedServices.map((serviceId) => { + const service = serviceList.find( + (s) => s.id === serviceId, + ); + // Create a safer way to access the field data + const fieldData = service?.field_data + ? (( + service.field_data[ + field.key as keyof typeof service.field_data + ] as FieldData | undefined + )?.value ?? "N/A") + : "N/A"; + + return ( + + ))} + +
Attribute + {service?.title} +
+ {field.label} + {/* + + */} + + ); + })} +
+
+ + ) : ( +
+ + Select service(s) to view details or compare + +
+ )} +
+ + {/* Footer */} + +
+
+
+ ); +} diff --git a/stylelint.config.mjs b/stylelint.config.mjs index a1c9a8fd9..5a7b3d8c2 100644 --- a/stylelint.config.mjs +++ b/stylelint.config.mjs @@ -6,7 +6,7 @@ * @see https://stylelint.io/user-guide/configure */ const stylelintConfig = { - extends: ["stylelint-config-standard"], + extends: ["stylelint-config-standard", "stylelint-config-rational-order"], overrides: [ { files: ["**/*.module.css"],