Commit 9291a1fc by PLN (Algolia)

feat(Parvagues): iteration

parent 2bdc2a1e
......@@ -18,6 +18,7 @@
"prismjs": "^1.30.0",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-icons": "^5.5.0",
"react-instantsearch": "^7.15.7",
"react-instantsearch-dom": "^6.40.4",
"react-masonry-css": "^1.0.16",
......@@ -217,9 +218,9 @@
}
},
"node_modules/@emnapi/runtime": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.4.0.tgz",
"integrity": "sha512-64WYIf4UYcdLnbKn/umDlNjQDSS8AgZrI/R9+x5ilkUVFxXcA1Ebl+gQLc/6mERA4407Xof0R7wEyEuj091CVw==",
"version": "1.4.3",
"resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.4.3.tgz",
"integrity": "sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==",
"license": "MIT",
"optional": true,
"dependencies": {
......@@ -752,6 +753,7 @@
"version": "15.3.1",
"resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.3.1.tgz",
"integrity": "sha512-tgg6b91pAybXHJQMAAwW9VuWBO6Thi+q7BCNARLwSqlmsHz0XYURtGvh/AuwSADXSI4h/2uHbs7s4FzlZDGSGA==",
"license": "MIT",
"dependencies": {
"@rollup/pluginutils": "^5.0.1",
"@types/resolve": "1.20.2",
......@@ -775,6 +777,7 @@
"version": "5.1.4",
"resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.4.tgz",
"integrity": "sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==",
"license": "MIT",
"dependencies": {
"@types/estree": "^1.0.0",
"estree-walker": "^2.0.2",
......@@ -811,6 +814,7 @@
"version": "4.1.12",
"resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz",
"integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==",
"license": "MIT",
"dependencies": {
"@types/ms": "*"
}
......@@ -824,7 +828,8 @@
"node_modules/@types/estree": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz",
"integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ=="
"integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==",
"license": "MIT"
},
"node_modules/@types/google.maps": {
"version": "3.58.1",
......@@ -851,6 +856,7 @@
"version": "3.0.15",
"resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz",
"integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==",
"license": "MIT",
"dependencies": {
"@types/unist": "^2"
}
......@@ -858,17 +864,20 @@
"node_modules/@types/mdast/node_modules/@types/unist": {
"version": "2.0.11",
"resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz",
"integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA=="
"integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==",
"license": "MIT"
},
"node_modules/@types/ms": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz",
"integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA=="
"integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==",
"license": "MIT"
},
"node_modules/@types/parse5": {
"version": "6.0.3",
"resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-6.0.3.tgz",
"integrity": "sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g=="
"integrity": "sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==",
"license": "MIT"
},
"node_modules/@types/prop-types": {
"version": "15.7.5",
......@@ -897,7 +906,8 @@
"node_modules/@types/resolve": {
"version": "1.20.2",
"resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz",
"integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q=="
"integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==",
"license": "MIT"
},
"node_modules/@types/unist": {
"version": "3.0.3",
......@@ -936,9 +946,9 @@
}
},
"node_modules/algoliasearch-helper": {
"version": "3.14.0",
"resolved": "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-3.14.0.tgz",
"integrity": "sha512-gXDXzsSS0YANn5dHr71CUXOo84cN4azhHKUbg71vAWnH+1JBiR4jf7to3t3JHXknXkbV0F7f055vUSBKrltHLQ==",
"version": "3.25.0",
"resolved": "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-3.25.0.tgz",
"integrity": "sha512-vQoK43U6HXA9/euCqLjvyNdM4G2Fiu/VFp4ae0Gau9sZeIKBPvUPnXfLYAe65Bg7PFuw03coeu5K6lTPSXRObw==",
"license": "MIT",
"dependencies": {
"@algolia/events": "^4.0.1"
......@@ -959,12 +969,14 @@
"node_modules/babel-plugin-add-module-exports": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/babel-plugin-add-module-exports/-/babel-plugin-add-module-exports-0.2.1.tgz",
"integrity": "sha512-3AN/9V/rKuv90NG65m4tTHsI04XrCKsWbztIcW7a8H5iIN7WlvWucRtVV0V/rT4QvtA11n5Vmp20fLwfMWqp6g=="
"integrity": "sha512-3AN/9V/rKuv90NG65m4tTHsI04XrCKsWbztIcW7a8H5iIN7WlvWucRtVV0V/rT4QvtA11n5Vmp20fLwfMWqp6g==",
"license": "MIT"
},
"node_modules/bail": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz",
"integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/wooorm"
......@@ -993,6 +1005,7 @@
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz",
"integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==",
"license": "MIT",
"dependencies": {
"buffer-alloc-unsafe": "^1.1.0",
"buffer-fill": "^1.0.0"
......@@ -1001,17 +1014,20 @@
"node_modules/buffer-alloc-unsafe": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz",
"integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg=="
"integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==",
"license": "MIT"
},
"node_modules/buffer-fill": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz",
"integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ=="
"integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==",
"license": "MIT"
},
"node_modules/buffer-from": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
"integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="
"integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
"license": "MIT"
},
"node_modules/busboy": {
"version": "1.6.0",
......@@ -1048,6 +1064,7 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz",
"integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/wooorm"
......@@ -1067,6 +1084,7 @@
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz",
"integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/wooorm"
......@@ -1162,7 +1180,8 @@
"node_modules/core-util-is": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
"integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="
"integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==",
"license": "MIT"
},
"node_modules/csstype": {
"version": "3.1.1",
......@@ -1185,6 +1204,7 @@
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/dct/-/dct-0.1.0.tgz",
"integrity": "sha512-/uUtEniuMq1aUxvLAoDtAduyl12oM1zhA/le2f83UFN/9+4KDHXFB6znEfoj5SDDLiTpUTr26NpxC7t8IFOYhQ==",
"license": "MIT",
"engines": {
"node": ">=0.12.0"
}
......@@ -1193,6 +1213,7 @@
"version": "4.4.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz",
"integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==",
"license": "MIT",
"dependencies": {
"ms": "^2.1.3"
},
......@@ -1209,6 +1230,7 @@
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.1.0.tgz",
"integrity": "sha512-Wy+JTSbFThEOXQIR2L6mxJvEs+veIzpmqD7ynWxMXGpnk3smkHQOp6forLdHsKpAMW9iJpaBBIxz285t1n1C3w==",
"license": "MIT",
"dependencies": {
"character-entities": "^2.0.0"
},
......@@ -1221,6 +1243,7 @@
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz",
"integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/wooorm"
......@@ -1239,6 +1262,7 @@
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz",
"integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==",
"license": "MIT",
"engines": {
"node": ">=6"
}
......@@ -1257,6 +1281,7 @@
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz",
"integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==",
"license": "BSD-3-Clause",
"engines": {
"node": ">=0.3.1"
}
......@@ -1277,12 +1302,14 @@
"node_modules/estree-walker": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
"integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
"integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
"license": "MIT"
},
"node_modules/events": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz",
"integrity": "sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw==",
"license": "MIT",
"engines": {
"node": ">=0.4.x"
}
......@@ -1290,7 +1317,8 @@
"node_modules/extend": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
"integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
"integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
"license": "MIT"
},
"node_modules/extend-shallow": {
"version": "2.0.1",
......@@ -1321,6 +1349,7 @@
"version": "0.0.4",
"resolved": "https://registry.npmjs.org/fftjs/-/fftjs-0.0.4.tgz",
"integrity": "sha512-nIWxQyth1LVD6NH8a+YZUv+McjzbOY6dMe4wv6Pq5cGfP+c8Rd1T8Dsd50DCWlNgzSqA3y9lOkpD6dZD3qHa1A==",
"license": "MIT",
"dependencies": {
"babel-plugin-add-module-exports": "^0.2.1"
}
......@@ -1337,6 +1366,7 @@
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
"integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
"license": "MIT",
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
......@@ -1360,6 +1390,7 @@
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
"integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
"license": "MIT",
"dependencies": {
"function-bind": "^1.1.2"
},
......@@ -1371,6 +1402,7 @@
"version": "7.1.2",
"resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-7.1.2.tgz",
"integrity": "sha512-Nz7FfPBuljzsN3tCQ4kCBKqdNhQE2l0Tn+X1ubgKBPRoiDIu1mL08Cfw4k7q71+Duyaw7DXDN+VTAp4Vh3oCOw==",
"license": "MIT",
"dependencies": {
"@types/hast": "^2.0.0",
"@types/unist": "^2.0.0",
......@@ -1388,12 +1420,14 @@
"node_modules/hast-util-from-parse5/node_modules/@types/unist": {
"version": "2.0.11",
"resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz",
"integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA=="
"integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==",
"license": "MIT"
},
"node_modules/hast-util-from-parse5/node_modules/comma-separated-tokens": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz",
"integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/wooorm"
......@@ -1403,6 +1437,7 @@
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-3.1.1.tgz",
"integrity": "sha512-jdlwBjEexy1oGz0aJ2f4GKMaVKkA9jwjr4MjAAI22E5fM/TXVZHuS5OpONtdeIkRKqAaryQ2E9xNQxijoThSZA==",
"license": "MIT",
"dependencies": {
"@types/hast": "^2.0.0"
},
......@@ -1415,6 +1450,7 @@
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/hastscript/-/hastscript-7.2.0.tgz",
"integrity": "sha512-TtYPq24IldU8iKoJQqvZOuhi5CyCQRAbvDOX0x1eW6rsHSxa/1i2CCiptNTotGHJ3VoHRGmqiv6/D3q113ikkw==",
"license": "MIT",
"dependencies": {
"@types/hast": "^2.0.0",
"comma-separated-tokens": "^2.0.0",
......@@ -1431,6 +1467,7 @@
"version": "6.5.0",
"resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz",
"integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/wooorm"
......@@ -1440,6 +1477,7 @@
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz",
"integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/wooorm"
......@@ -1459,6 +1497,7 @@
"version": "7.2.3",
"resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-7.2.3.tgz",
"integrity": "sha512-RujVQfVsOrxzPOPSzZFiwofMArbQke6DJjnFfceiEbFh7S05CbPt0cYN+A5YeD3pso0JQk6O1aHBnx9+Pm2uqg==",
"license": "MIT",
"dependencies": {
"@types/hast": "^2.0.0",
"@types/parse5": "^6.0.0",
......@@ -1481,6 +1520,7 @@
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/hast-util-sanitize/-/hast-util-sanitize-4.1.0.tgz",
"integrity": "sha512-Hd9tU0ltknMGRDv+d6Ro/4XKzBqQnP/EZrpiTbpFYfXv/uOhWeKc+2uajcbEvAEH98VZd7eII2PiXm13RihnLw==",
"license": "MIT",
"dependencies": {
"@types/hast": "^2.0.0"
},
......@@ -1493,6 +1533,7 @@
"version": "8.0.4",
"resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-8.0.4.tgz",
"integrity": "sha512-4tpQTUOr9BMjtYyNlt0P50mH7xj0Ks2xpo8M943Vykljf99HW6EzulIoJP1N3eKOSScEHzyzi9dm7/cn0RfGwA==",
"license": "MIT",
"dependencies": {
"@types/hast": "^2.0.0",
"@types/unist": "^2.0.0",
......@@ -1514,12 +1555,14 @@
"node_modules/hast-util-to-html/node_modules/@types/unist": {
"version": "2.0.11",
"resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz",
"integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA=="
"integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==",
"license": "MIT"
},
"node_modules/hast-util-to-html/node_modules/comma-separated-tokens": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz",
"integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/wooorm"
......@@ -1529,6 +1572,7 @@
"version": "6.5.0",
"resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz",
"integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/wooorm"
......@@ -1538,6 +1582,7 @@
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz",
"integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/wooorm"
......@@ -1547,6 +1592,7 @@
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-7.1.0.tgz",
"integrity": "sha512-YNRgAJkH2Jky5ySkIqFXTQiaqcAtJyVE+D5lkN6CdtOqrnkLfGYYrEcKuHOJZlp+MwjSwuD3fZuawI+sic/RBw==",
"license": "MIT",
"dependencies": {
"@types/hast": "^2.0.0",
"comma-separated-tokens": "^2.0.0",
......@@ -1564,6 +1610,7 @@
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz",
"integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/wooorm"
......@@ -1573,6 +1620,7 @@
"version": "6.5.0",
"resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz",
"integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/wooorm"
......@@ -1582,6 +1630,7 @@
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz",
"integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/wooorm"
......@@ -1591,6 +1640,7 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-2.0.1.tgz",
"integrity": "sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==",
"license": "MIT",
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
......@@ -1650,6 +1700,7 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-2.0.1.tgz",
"integrity": "sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/wooorm"
......@@ -1659,6 +1710,7 @@
"version": "1.3.29",
"resolved": "https://registry.npmjs.org/hydra-synth/-/hydra-synth-1.3.29.tgz",
"integrity": "sha512-KK1wMGpo9AuVivvD9SP7ukPS7T/rMaYA7XMlnRF3oFbTw9u4l4aVTyexG+KmCd5XDD/4GulR1jVzySZlAuGPCw==",
"license": "AGPL",
"dependencies": {
"meyda": "^5.5.1",
"raf-loop": "^1.1.3",
......@@ -1668,7 +1720,8 @@
"node_modules/inherits": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
"license": "ISC"
},
"node_modules/instantsearch-ui-components": {
"version": "0.11.1",
......@@ -1702,18 +1755,6 @@
"algoliasearch": ">= 3.1 < 6"
}
},
"node_modules/instantsearch.js/node_modules/algoliasearch-helper": {
"version": "3.25.0",
"resolved": "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-3.25.0.tgz",
"integrity": "sha512-vQoK43U6HXA9/euCqLjvyNdM4G2Fiu/VFp4ae0Gau9sZeIKBPvUPnXfLYAe65Bg7PFuw03coeu5K6lTPSXRObw==",
"license": "MIT",
"dependencies": {
"@algolia/events": "^4.0.1"
},
"peerDependencies": {
"algoliasearch": ">= 3.1 < 6"
}
},
"node_modules/is-alphabetical": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz",
......@@ -1763,6 +1804,7 @@
"url": "https://feross.org/support"
}
],
"license": "MIT",
"engines": {
"node": ">=4"
}
......@@ -1771,6 +1813,7 @@
"version": "2.16.1",
"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz",
"integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==",
"license": "MIT",
"dependencies": {
"hasown": "^2.0.2"
},
......@@ -1813,12 +1856,14 @@
"node_modules/is-module": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz",
"integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g=="
"integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==",
"license": "MIT"
},
"node_modules/is-plain-obj": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz",
"integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==",
"license": "MIT",
"engines": {
"node": ">=12"
},
......@@ -1829,7 +1874,8 @@
"node_modules/isarray": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
"integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ=="
"integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==",
"license": "MIT"
},
"node_modules/js-tokens": {
"version": "4.0.0",
......@@ -1863,6 +1909,7 @@
"version": "4.1.5",
"resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz",
"integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==",
"license": "MIT",
"engines": {
"node": ">=6"
}
......@@ -1877,6 +1924,7 @@
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz",
"integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/wooorm"
......@@ -1924,6 +1972,7 @@
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-5.1.2.tgz",
"integrity": "sha512-8SVPMuHqlPME/z3gqVwWY4zVXn8lqKv/pAhC57FuJ40ImXyBpmO5ukh98zB2v7Blql2FiHjHv9LVztSIqjY+MA==",
"license": "MIT",
"dependencies": {
"@types/mdast": "^3.0.0",
"@types/unist": "^2.0.0",
......@@ -1937,12 +1986,14 @@
"node_modules/mdast-util-definitions/node_modules/@types/unist": {
"version": "2.0.11",
"resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz",
"integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA=="
"integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==",
"license": "MIT"
},
"node_modules/mdast-util-from-markdown": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.3.1.tgz",
"integrity": "sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==",
"license": "MIT",
"dependencies": {
"@types/mdast": "^3.0.0",
"@types/unist": "^2.0.0",
......@@ -1965,12 +2016,14 @@
"node_modules/mdast-util-from-markdown/node_modules/@types/unist": {
"version": "2.0.11",
"resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz",
"integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA=="
"integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==",
"license": "MIT"
},
"node_modules/mdast-util-phrasing": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-3.0.1.tgz",
"integrity": "sha512-WmI1gTXUBJo4/ZmSk79Wcb2HcjPJBzM1nlI/OUWA8yk2X9ik3ffNbBGsU+09BFmXaL1IBb9fiuvq6/KMiNycSg==",
"license": "MIT",
"dependencies": {
"@types/mdast": "^3.0.0",
"unist-util-is": "^5.0.0"
......@@ -1984,6 +2037,7 @@
"version": "12.3.0",
"resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-12.3.0.tgz",
"integrity": "sha512-pits93r8PhnIoU4Vy9bjW39M2jJ6/tdHyja9rrot9uujkN7UTU9SDnE6WNJz/IGyQk3XHX6yNNtrBH6cQzm8Hw==",
"license": "MIT",
"dependencies": {
"@types/hast": "^2.0.0",
"@types/mdast": "^3.0.0",
......@@ -2003,6 +2057,7 @@
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-1.5.0.tgz",
"integrity": "sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A==",
"license": "MIT",
"dependencies": {
"@types/mdast": "^3.0.0",
"@types/unist": "^2.0.0",
......@@ -2021,12 +2076,14 @@
"node_modules/mdast-util-to-markdown/node_modules/@types/unist": {
"version": "2.0.11",
"resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz",
"integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA=="
"integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==",
"license": "MIT"
},
"node_modules/mdast-util-to-string": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.2.0.tgz",
"integrity": "sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==",
"license": "MIT",
"dependencies": {
"@types/mdast": "^3.0.0"
},
......@@ -2045,6 +2102,10 @@
"version": "5.6.3",
"resolved": "https://registry.npmjs.org/meyda/-/meyda-5.6.3.tgz",
"integrity": "sha512-fAdwfzIi1WDoL0idUQvCD7dZ7EN74FYH83G+jZQO3Nr9yOEBtzFvcMg2KLdLlu6psSP8XFlO0kYynG5o/E681Q==",
"license": "MIT",
"workspaces": [
"docs"
],
"dependencies": {
"@rollup/plugin-node-resolve": "^15.2.3",
"dct": "0.1.0",
......@@ -2070,6 +2131,7 @@
"url": "https://opencollective.com/unified"
}
],
"license": "MIT",
"dependencies": {
"@types/debug": "^4.0.0",
"debug": "^4.0.0",
......@@ -2104,6 +2166,7 @@
"url": "https://opencollective.com/unified"
}
],
"license": "MIT",
"dependencies": {
"decode-named-character-reference": "^1.0.0",
"micromark-factory-destination": "^1.0.0",
......@@ -2137,6 +2200,7 @@
"url": "https://opencollective.com/unified"
}
],
"license": "MIT",
"dependencies": {
"micromark-util-character": "^1.0.0",
"micromark-util-symbol": "^1.0.0",
......@@ -2157,6 +2221,7 @@
"url": "https://opencollective.com/unified"
}
],
"license": "MIT",
"dependencies": {
"micromark-util-character": "^1.0.0",
"micromark-util-symbol": "^1.0.0",
......@@ -2178,6 +2243,7 @@
"url": "https://opencollective.com/unified"
}
],
"license": "MIT",
"dependencies": {
"micromark-util-character": "^1.0.0",
"micromark-util-types": "^1.0.0"
......@@ -2197,6 +2263,7 @@
"url": "https://opencollective.com/unified"
}
],
"license": "MIT",
"dependencies": {
"micromark-factory-space": "^1.0.0",
"micromark-util-character": "^1.0.0",
......@@ -2218,6 +2285,7 @@
"url": "https://opencollective.com/unified"
}
],
"license": "MIT",
"dependencies": {
"micromark-factory-space": "^1.0.0",
"micromark-util-character": "^1.0.0",
......@@ -2239,6 +2307,7 @@
"url": "https://opencollective.com/unified"
}
],
"license": "MIT",
"dependencies": {
"micromark-util-symbol": "^1.0.0",
"micromark-util-types": "^1.0.0"
......@@ -2258,6 +2327,7 @@
"url": "https://opencollective.com/unified"
}
],
"license": "MIT",
"dependencies": {
"micromark-util-symbol": "^1.0.0"
}
......@@ -2276,6 +2346,7 @@
"url": "https://opencollective.com/unified"
}
],
"license": "MIT",
"dependencies": {
"micromark-util-character": "^1.0.0",
"micromark-util-symbol": "^1.0.0",
......@@ -2296,6 +2367,7 @@
"url": "https://opencollective.com/unified"
}
],
"license": "MIT",
"dependencies": {
"micromark-util-chunked": "^1.0.0",
"micromark-util-types": "^1.0.0"
......@@ -2315,6 +2387,7 @@
"url": "https://opencollective.com/unified"
}
],
"license": "MIT",
"dependencies": {
"micromark-util-symbol": "^1.0.0"
}
......@@ -2333,6 +2406,7 @@
"url": "https://opencollective.com/unified"
}
],
"license": "MIT",
"dependencies": {
"decode-named-character-reference": "^1.0.0",
"micromark-util-character": "^1.0.0",
......@@ -2353,7 +2427,8 @@
"type": "OpenCollective",
"url": "https://opencollective.com/unified"
}
]
],
"license": "MIT"
},
"node_modules/micromark-util-html-tag-name": {
"version": "1.2.0",
......@@ -2368,7 +2443,8 @@
"type": "OpenCollective",
"url": "https://opencollective.com/unified"
}
]
],
"license": "MIT"
},
"node_modules/micromark-util-normalize-identifier": {
"version": "1.1.0",
......@@ -2384,6 +2460,7 @@
"url": "https://opencollective.com/unified"
}
],
"license": "MIT",
"dependencies": {
"micromark-util-symbol": "^1.0.0"
}
......@@ -2402,6 +2479,7 @@
"url": "https://opencollective.com/unified"
}
],
"license": "MIT",
"dependencies": {
"micromark-util-types": "^1.0.0"
}
......@@ -2420,6 +2498,7 @@
"url": "https://opencollective.com/unified"
}
],
"license": "MIT",
"dependencies": {
"micromark-util-character": "^1.0.0",
"micromark-util-encode": "^1.0.0",
......@@ -2440,6 +2519,7 @@
"url": "https://opencollective.com/unified"
}
],
"license": "MIT",
"dependencies": {
"micromark-util-chunked": "^1.0.0",
"micromark-util-symbol": "^1.0.0",
......@@ -2460,7 +2540,8 @@
"type": "OpenCollective",
"url": "https://opencollective.com/unified"
}
]
],
"license": "MIT"
},
"node_modules/micromark-util-types": {
"version": "1.1.0",
......@@ -2475,7 +2556,8 @@
"type": "OpenCollective",
"url": "https://opencollective.com/unified"
}
]
],
"license": "MIT"
},
"node_modules/mkdirp": {
"version": "0.3.0",
......@@ -2491,6 +2573,7 @@
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz",
"integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==",
"license": "MIT",
"engines": {
"node": ">=4"
}
......@@ -2498,7 +2581,8 @@
"node_modules/ms": {
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
"license": "MIT"
},
"node_modules/nanoid": {
"version": "3.3.11",
......@@ -2576,6 +2660,7 @@
"version": "0.3.2",
"resolved": "https://registry.npmjs.org/node-getopt/-/node-getopt-0.3.2.tgz",
"integrity": "sha512-yqkmYrMbK1wPrfz7mgeYvA4tBperLg9FQ4S3Sau3nSAkpOA0x0zC8nQ1siBwozy1f4SE8vq2n1WKv99r+PCa1Q==",
"license": "MIT",
"engines": {
"node": ">= 0.6.0"
}
......@@ -2625,17 +2710,20 @@
"node_modules/parse5": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
"integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw=="
"integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==",
"license": "MIT"
},
"node_modules/path-parse": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
"integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
"integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
"license": "MIT"
},
"node_modules/performance-now": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
"integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow=="
"integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==",
"license": "MIT"
},
"node_modules/picocolors": {
"version": "1.1.1",
......@@ -2647,6 +2735,7 @@
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
"integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
"license": "MIT",
"engines": {
"node": ">=12"
},
......@@ -2741,6 +2830,7 @@
"version": "3.4.1",
"resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz",
"integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==",
"license": "MIT",
"dependencies": {
"performance-now": "^2.1.0"
}
......@@ -2749,6 +2839,7 @@
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/raf-loop/-/raf-loop-1.1.3.tgz",
"integrity": "sha512-fcIuuIdjbD6OB0IFw4d+cjqdrzDorKkIpwOiSnfU4Tht5PTFiJutR8hnCOGslYqZDyIzwpF5WnwbnTTuo9uUUA==",
"license": "MIT",
"dependencies": {
"events": "^1.0.2",
"inherits": "^2.0.1",
......@@ -2787,6 +2878,15 @@
"integrity": "sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==",
"license": "MIT"
},
"node_modules/react-icons": {
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/react-icons/-/react-icons-5.5.0.tgz",
"integrity": "sha512-MEFcXdkP3dLo8uumGI5xN3lDFNsRtrjbOEKDLD7yv76v4wpnEq2Lt2qeHaQOr34I/wPN3s3+N08WkQ+CW37Xiw==",
"license": "MIT",
"peerDependencies": {
"react": "*"
}
},
"node_modules/react-instantsearch": {
"version": "7.15.7",
"resolved": "https://registry.npmjs.org/react-instantsearch/-/react-instantsearch-7.15.7.tgz",
......@@ -2805,19 +2905,19 @@
}
},
"node_modules/react-instantsearch-core": {
"version": "6.40.4",
"resolved": "https://registry.npmjs.org/react-instantsearch-core/-/react-instantsearch-core-6.40.4.tgz",
"integrity": "sha512-sEOgRU2MKL8edO85sNHvKlZ5yq9OFw++CDsEqYpHJvbWLE/2J2N49XAUY90kior09I2kBkbgowBbov+Py1AubQ==",
"version": "7.15.7",
"resolved": "https://registry.npmjs.org/react-instantsearch-core/-/react-instantsearch-core-7.15.7.tgz",
"integrity": "sha512-9FOHY66VMD0FnxF1dT9g5eEPmGybeKwVAa/T2JX1AqLJCQMHysjEl6qH4+/F8M82KdCqzBof4mpFosPiAVuruA==",
"license": "MIT",
"dependencies": {
"@babel/runtime": "^7.1.2",
"algoliasearch-helper": "3.14.0",
"prop-types": "^15.6.2",
"react-fast-compare": "^3.0.0"
"algoliasearch-helper": "3.25.0",
"instantsearch.js": "4.78.3",
"use-sync-external-store": "^1.0.0"
},
"peerDependencies": {
"algoliasearch": ">= 3.1 < 5",
"react": ">= 16.3.0 < 19"
"algoliasearch": ">= 3.1 < 6",
"react": ">= 16.8.0 < 20"
}
},
"node_modules/react-instantsearch-dom": {
......@@ -2840,10 +2940,10 @@
"react-dom": ">= 16.3.0 < 19"
}
},
"node_modules/react-instantsearch/node_modules/algoliasearch-helper": {
"version": "3.25.0",
"resolved": "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-3.25.0.tgz",
"integrity": "sha512-vQoK43U6HXA9/euCqLjvyNdM4G2Fiu/VFp4ae0Gau9sZeIKBPvUPnXfLYAe65Bg7PFuw03coeu5K6lTPSXRObw==",
"node_modules/react-instantsearch-dom/node_modules/algoliasearch-helper": {
"version": "3.14.0",
"resolved": "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-3.14.0.tgz",
"integrity": "sha512-gXDXzsSS0YANn5dHr71CUXOo84cN4azhHKUbg71vAWnH+1JBiR4jf7to3t3JHXknXkbV0F7f055vUSBKrltHLQ==",
"license": "MIT",
"dependencies": {
"@algolia/events": "^4.0.1"
......@@ -2852,20 +2952,20 @@
"algoliasearch": ">= 3.1 < 6"
}
},
"node_modules/react-instantsearch/node_modules/react-instantsearch-core": {
"version": "7.15.7",
"resolved": "https://registry.npmjs.org/react-instantsearch-core/-/react-instantsearch-core-7.15.7.tgz",
"integrity": "sha512-9FOHY66VMD0FnxF1dT9g5eEPmGybeKwVAa/T2JX1AqLJCQMHysjEl6qH4+/F8M82KdCqzBof4mpFosPiAVuruA==",
"node_modules/react-instantsearch-dom/node_modules/react-instantsearch-core": {
"version": "6.40.4",
"resolved": "https://registry.npmjs.org/react-instantsearch-core/-/react-instantsearch-core-6.40.4.tgz",
"integrity": "sha512-sEOgRU2MKL8edO85sNHvKlZ5yq9OFw++CDsEqYpHJvbWLE/2J2N49XAUY90kior09I2kBkbgowBbov+Py1AubQ==",
"license": "MIT",
"dependencies": {
"@babel/runtime": "^7.1.2",
"algoliasearch-helper": "3.25.0",
"instantsearch.js": "4.78.3",
"use-sync-external-store": "^1.0.0"
"algoliasearch-helper": "3.14.0",
"prop-types": "^15.6.2",
"react-fast-compare": "^3.0.0"
},
"peerDependencies": {
"algoliasearch": ">= 3.1 < 6",
"react": ">= 16.8.0 < 20"
"algoliasearch": ">= 3.1 < 5",
"react": ">= 16.3.0 < 19"
}
},
"node_modules/react-is": {
......@@ -2920,6 +3020,7 @@
"version": "1.1.14",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
"integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==",
"license": "MIT",
"dependencies": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.1",
......@@ -2960,12 +3061,14 @@
"node_modules/regl": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/regl/-/regl-1.7.0.tgz",
"integrity": "sha512-bEAtp/qrtKucxXSJkD4ebopFZYP0q1+3Vb2WECWv/T8yQEgKxDxJ7ztO285tAMaYZVR6mM1GgI6CCn8FROtL1w=="
"integrity": "sha512-bEAtp/qrtKucxXSJkD4ebopFZYP0q1+3Vb2WECWv/T8yQEgKxDxJ7ztO285tAMaYZVR6mM1GgI6CCn8FROtL1w==",
"license": "MIT"
},
"node_modules/remark": {
"version": "14.0.3",
"resolved": "https://registry.npmjs.org/remark/-/remark-14.0.3.tgz",
"integrity": "sha512-bfmJW1dmR2LvaMJuAnE88pZP9DktIFYXazkTfOIKZzi3Knk9lT0roItIA24ydOucI3bV/g/tXBA6hzqq3FV9Ew==",
"license": "MIT",
"dependencies": {
"@types/mdast": "^3.0.0",
"remark-parse": "^10.0.0",
......@@ -2981,6 +3084,7 @@
"version": "15.0.2",
"resolved": "https://registry.npmjs.org/remark-html/-/remark-html-15.0.2.tgz",
"integrity": "sha512-/CIOI7wzHJzsh48AiuIyIe1clxVkUtreul73zcCXLub0FmnevQE0UMFDQm7NUx8/3rl/4zCshlMfqBdWScQthw==",
"license": "MIT",
"dependencies": {
"@types/mdast": "^3.0.0",
"hast-util-sanitize": "^4.0.0",
......@@ -2997,6 +3101,7 @@
"version": "10.0.2",
"resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-10.0.2.tgz",
"integrity": "sha512-3ydxgHa/ZQzG8LvC7jTXccARYDcRld3VfcgIIFs7bI6vbRSxJJmzgLEIIoYKyrfhaY+ujuWaf/PJiMZXoiCXgw==",
"license": "MIT",
"dependencies": {
"@types/mdast": "^3.0.0",
"mdast-util-from-markdown": "^1.0.0",
......@@ -3011,6 +3116,7 @@
"version": "10.0.3",
"resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-10.0.3.tgz",
"integrity": "sha512-koyOzCMYoUHudypbj4XpnAKFbkddRMYZHwghnxd7ue5210WzGw6kOBwauJTRUMq16jsovXx8dYNvSSWP89kZ3A==",
"license": "MIT",
"dependencies": {
"@types/mdast": "^3.0.0",
"mdast-util-to-markdown": "^1.0.0",
......@@ -3025,6 +3131,7 @@
"version": "1.22.10",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz",
"integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==",
"license": "MIT",
"dependencies": {
"is-core-module": "^2.16.0",
"path-parse": "^1.0.7",
......@@ -3043,12 +3150,14 @@
"node_modules/right-now": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/right-now/-/right-now-1.0.0.tgz",
"integrity": "sha512-DA8+YS+sMIVpbsuKgy+Z67L9Lxb1p05mNxRpDPNksPDEFir4vmBlUtuN9jkTGn9YMMdlBuK7XQgFiz6ws+yhSg=="
"integrity": "sha512-DA8+YS+sMIVpbsuKgy+Z67L9Lxb1p05mNxRpDPNksPDEFir4vmBlUtuN9jkTGn9YMMdlBuK7XQgFiz6ws+yhSg==",
"license": "MIT"
},
"node_modules/sade": {
"version": "1.8.1",
"resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz",
"integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==",
"license": "MIT",
"dependencies": {
"mri": "^1.1.0"
},
......@@ -3177,6 +3286,7 @@
"version": "0.3.1",
"resolved": "https://registry.npmjs.org/stream-parser/-/stream-parser-0.3.1.tgz",
"integrity": "sha512-bJ/HgKq41nlKvlhccD5kaCr/P+Hu0wPNKPJOH7en+YrJu/9EgqUF+88w5Jb6KNcjOFMhfX4B2asfeAtIGuHObQ==",
"license": "MIT",
"dependencies": {
"debug": "2"
}
......@@ -3185,6 +3295,7 @@
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"license": "MIT",
"dependencies": {
"ms": "2.0.0"
}
......@@ -3192,7 +3303,8 @@
"node_modules/stream-parser/node_modules/ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
"license": "MIT"
},
"node_modules/streamsearch": {
"version": "1.1.0",
......@@ -3205,12 +3317,14 @@
"node_modules/string_decoder": {
"version": "0.10.31",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
"integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ=="
"integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==",
"license": "MIT"
},
"node_modules/stringify-entities": {
"version": "4.0.4",
"resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz",
"integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==",
"license": "MIT",
"dependencies": {
"character-entities-html4": "^2.0.0",
"character-entities-legacy": "^3.0.0"
......@@ -3224,6 +3338,7 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz",
"integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/wooorm"
......@@ -3265,6 +3380,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
"integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
"license": "MIT",
"engines": {
"node": ">= 0.4"
},
......@@ -3286,6 +3402,7 @@
"url": "http://opencollective.com/swiper"
}
],
"license": "MIT",
"engines": {
"node": ">= 4.7.0"
}
......@@ -3294,6 +3411,7 @@
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz",
"integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/wooorm"
......@@ -3303,6 +3421,7 @@
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz",
"integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/wooorm"
......@@ -3332,6 +3451,7 @@
"version": "10.1.2",
"resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz",
"integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==",
"license": "MIT",
"dependencies": {
"@types/unist": "^2.0.0",
"bail": "^2.0.0",
......@@ -3349,12 +3469,14 @@
"node_modules/unified/node_modules/@types/unist": {
"version": "2.0.11",
"resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz",
"integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA=="
"integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==",
"license": "MIT"
},
"node_modules/unist-util-generated": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-2.0.1.tgz",
"integrity": "sha512-qF72kLmPxAw0oN2fwpWIqbXAVyEqUzDHMsbtPvOudIlUzXYFIeQIuxXQCRCFh22B7cixvU0MG7m3MW8FTq/S+A==",
"license": "MIT",
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
......@@ -3364,6 +3486,7 @@
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz",
"integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==",
"license": "MIT",
"dependencies": {
"@types/unist": "^2.0.0"
},
......@@ -3375,12 +3498,14 @@
"node_modules/unist-util-is/node_modules/@types/unist": {
"version": "2.0.11",
"resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz",
"integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA=="
"integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==",
"license": "MIT"
},
"node_modules/unist-util-position": {
"version": "4.0.4",
"resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-4.0.4.tgz",
"integrity": "sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg==",
"license": "MIT",
"dependencies": {
"@types/unist": "^2.0.0"
},
......@@ -3392,12 +3517,14 @@
"node_modules/unist-util-position/node_modules/@types/unist": {
"version": "2.0.11",
"resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz",
"integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA=="
"integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==",
"license": "MIT"
},
"node_modules/unist-util-stringify-position": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz",
"integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==",
"license": "MIT",
"dependencies": {
"@types/unist": "^2.0.0"
},
......@@ -3409,12 +3536,14 @@
"node_modules/unist-util-stringify-position/node_modules/@types/unist": {
"version": "2.0.11",
"resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz",
"integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA=="
"integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==",
"license": "MIT"
},
"node_modules/unist-util-visit": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz",
"integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==",
"license": "MIT",
"dependencies": {
"@types/unist": "^2.0.0",
"unist-util-is": "^5.0.0",
......@@ -3429,6 +3558,7 @@
"version": "5.1.3",
"resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz",
"integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==",
"license": "MIT",
"dependencies": {
"@types/unist": "^2.0.0",
"unist-util-is": "^5.0.0"
......@@ -3441,12 +3571,14 @@
"node_modules/unist-util-visit-parents/node_modules/@types/unist": {
"version": "2.0.11",
"resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz",
"integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA=="
"integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==",
"license": "MIT"
},
"node_modules/unist-util-visit/node_modules/@types/unist": {
"version": "2.0.11",
"resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz",
"integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA=="
"integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==",
"license": "MIT"
},
"node_modules/use-sync-external-store": {
"version": "1.5.0",
......@@ -3461,6 +3593,7 @@
"version": "0.5.6",
"resolved": "https://registry.npmjs.org/uvu/-/uvu-0.5.6.tgz",
"integrity": "sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==",
"license": "MIT",
"dependencies": {
"dequal": "^2.0.0",
"diff": "^5.0.0",
......@@ -3478,6 +3611,7 @@
"version": "5.3.7",
"resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz",
"integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==",
"license": "MIT",
"dependencies": {
"@types/unist": "^2.0.0",
"is-buffer": "^2.0.0",
......@@ -3493,6 +3627,7 @@
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-4.1.0.tgz",
"integrity": "sha512-YF23YMyASIIJXpktBa4vIGLJ5Gs88UB/XePgqPmTa7cDA+JeO3yclbpheQYCHjVHBn/yePzrXuygIL+xbvRYHw==",
"license": "MIT",
"dependencies": {
"@types/unist": "^2.0.0",
"vfile": "^5.0.0"
......@@ -3505,12 +3640,14 @@
"node_modules/vfile-location/node_modules/@types/unist": {
"version": "2.0.11",
"resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz",
"integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA=="
"integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==",
"license": "MIT"
},
"node_modules/vfile-message": {
"version": "3.1.4",
"resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz",
"integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==",
"license": "MIT",
"dependencies": {
"@types/unist": "^2.0.0",
"unist-util-stringify-position": "^3.0.0"
......@@ -3523,17 +3660,20 @@
"node_modules/vfile-message/node_modules/@types/unist": {
"version": "2.0.11",
"resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz",
"integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA=="
"integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==",
"license": "MIT"
},
"node_modules/vfile/node_modules/@types/unist": {
"version": "2.0.11",
"resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz",
"integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA=="
"integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==",
"license": "MIT"
},
"node_modules/wav": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wav/-/wav-1.0.2.tgz",
"integrity": "sha512-viHtz3cDd/Tcr/HbNqzQCofKdF6kWUymH9LGDdskfWFoIy/HJ+RTihgjEcHfnsy1PO4e9B+y4HwgTwMrByquhg==",
"license": "MIT",
"dependencies": {
"buffer-alloc": "^1.1.0",
"buffer-from": "^1.0.0",
......@@ -3546,6 +3686,7 @@
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"license": "MIT",
"dependencies": {
"ms": "2.0.0"
}
......@@ -3553,12 +3694,14 @@
"node_modules/wav/node_modules/ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
"license": "MIT"
},
"node_modules/web-namespaces": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz",
"integrity": "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/wooorm"
......@@ -3577,6 +3720,7 @@
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz",
"integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/wooorm"
......
......@@ -21,6 +21,7 @@
"prismjs": "^1.30.0",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-icons": "^5.5.0",
"react-instantsearch": "^7.15.7",
"react-instantsearch-dom": "^6.40.4",
"react-masonry-css": "^1.0.16",
......
import Head from 'next/head';
import Link from 'next/link';
import Image from 'next/image';
import { useState, useEffect, useRef } from 'react';
import { getAllLives } from '../lib/livesData';
import { useEffect, useRef, useLayoutEffect, useState } from 'react';
import styles from '../styles/parvagues.module.css';
import dynamic from 'next/dynamic';
// React Icons imports
import { FaSpotify, FaDeezer, FaYoutube, FaApple, FaAmazon, FaInstagram, FaTwitter, FaEnvelope } from 'react-icons/fa';
import { SiTidal, SiBluesky, SiMastodon } from 'react-icons/si';
import { MdPlayArrow, MdPause } from 'react-icons/md';
// Dynamically import Prism.js with no SSR
const Prism = dynamic(() => import('prismjs'), { ssr: false });
const PrismHaskell = dynamic(() => import('prismjs/components/prism-haskell'), { ssr: false });
const PrismCSS = dynamic(() => import('prismjs/themes/prism-tomorrow.css'), { ssr: false });
// Import Swiper components
const Swiper = dynamic(() => import('swiper/react').then(mod => mod.Swiper), { ssr: false });
const SwiperSlide = dynamic(() => import('swiper/react').then(mod => mod.SwiperSlide), { ssr: false });
// Import Swiper styles
import 'swiper/css';
import 'swiper/css/effect-cards';
import 'swiper/css/pagination';
import 'swiper/css/navigation';
function CodeBlock({ children, className = '' }) {
function CodeBlock({ children, height = '400px', isTerminal = false }) {
const [isClient, setIsClient] = useState(false);
const codeRef = useRef(null);
......@@ -37,356 +33,474 @@ function CodeBlock({ children, className = '' }) {
if (!isClient) {
return (
<pre className={`bg-gray-900 p-4 rounded-lg text-sm overflow-x-auto border border-purple-500/20 ${className}`}>
<div className={`${styles.codeContainer} ${isTerminal ? styles.terminalContainer : ''}`} style={{ maxHeight: height }}>
{isTerminal && (
<div className={styles.terminalHeader}>
<div className={styles.terminalControls}>
<span className={styles.redCircle}></span>
<span className={styles.yellowCircle}></span>
<span className={styles.greenCircle}></span>
</div>
<div className={styles.terminalTitle}>ParVagues@tidal:~</div>
</div>
)}
<pre className="language-haskell">
<code>{children}</code>
</pre>
</div>
);
}
return (
<pre className={`language-haskell bg-gray-900 p-4 rounded-lg text-sm overflow-x-auto border border-purple-500/20 ${className}`}>
<div className={`${styles.codeContainer} ${isTerminal ? styles.terminalContainer : ''}`} style={{ maxHeight: height }}>
{isTerminal && (
<div className={styles.terminalHeader}>
<div className={styles.terminalControls}>
<span className={styles.redCircle}></span>
<span className={styles.yellowCircle}></span>
<span className={styles.greenCircle}></span>
</div>
<div className={styles.terminalTitle}>ParVagues@tidal:~</div>
</div>
)}
<pre className="language-haskell">
<code ref={codeRef}>{children}</code>
</pre>
</div>
);
}
// Define all posters and their positions
const posterImages = [
'/images/parvagues/lives/2022/Bazurto/poster.jpg',
'/images/parvagues/lives/2022/OPERATE/poster.png',
'/images/parvagues/lives/2024/ccc_release_party/poster.png',
'/images/parvagues/lives/2025/algorave-lyon/poster.jpeg',
'/images/parvagues/lives/2025/ensad/poster.png',
];
export default function ParVagues({ lives }) {
const rainRef = useRef(null);
const [tidalCode, setTidalCode] = useState('');
const [showPlayers, setShowPlayers] = useState({});
const [isPlaying, setIsPlaying] = useState(false);
const [selectedSection, setSelectedSection] = useState('code');
const [sectionImages, setSectionImages] = useState([]);
const [currentImageIndex, setCurrentImageIndex] = useState(0);
const backgroundRef = useRef(null);
const audioRef = useRef(null);
// Define section content
const sections = {
potentiel: {
type: 'image',
image: '/images/parvagues/samples.png'
},
composition: {
type: 'carousel',
images: [
'/images/parvagues/studio1.jpg',
'/images/parvagues/gear1.jpg',
'/images/parvagues/gear2.jpg'
]
},
performance: {
type: 'carousel',
images: [
'/images/parvagues/live.jpg',
'/images/parvagues/code_overlay.jpg'
]
},
code: {
type: 'code',
content: tidalCode
}
};
// Fetch Tidal code with proxy or fallback
useEffect(() => {
// Subtle rain effect
const canvas = rainRef.current;
if (!canvas) return;
const ctx = canvas.getContext('2d');
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
const drops = [];
for (let i = 0; i < 50; i++) {
drops.push({
x: Math.random() * canvas.width,
y: Math.random() * canvas.height,
length: Math.random() * 20 + 10,
opacity: Math.random() * 0.5,
speed: Math.random() * 3 + 2,
});
// Use fallback code since CORS is blocking
const code = `do
setcps (120/60/4) -- 120 BPM
d1 $ "k . k(<3!3 5>,8)" . "jazz" -- Kick chaloupé
d2 $ "~ s ~ s*<1 2>" # "snare:42" -- Snare régulier
d3 $ whenmod 8 6 (degradeBy 0.2)
$ fast "<1 1 2 <1 2>>"
$ "dr*[8 16]" # "h2ogmhh:2" -- Drumroll
d4 $ note ("<e3 fs3 <gs3 d4> <a3 df4>>" - 12)
# "bassWarsaw" -- BASSLINE`;
setTidalCode(code);
}, []);
// Update section images based on selection
useEffect(() => {
const sectionContent = sections[selectedSection];
if (sectionContent && sectionContent.type === 'carousel') {
setSectionImages(sectionContent.images);
setCurrentImageIndex(0);
}
}, [selectedSection]);
function animate() {
ctx.clearRect(0, 0, canvas.width, canvas.height);
drops.forEach(drop => {
ctx.strokeStyle = `rgba(147, 51, 234, ${drop.opacity})`;
ctx.lineWidth = 1;
ctx.beginPath();
ctx.moveTo(drop.x, drop.y);
ctx.lineTo(drop.x, drop.y + drop.length);
ctx.stroke();
drop.y += drop.speed;
if (drop.y > canvas.height) {
drop.y = -drop.length;
drop.x = Math.random() * canvas.width;
// Carousel effect for section images
useEffect(() => {
if (sectionImages.length > 1) {
const interval = setInterval(() => {
setCurrentImageIndex(prev => (prev + 1) % sectionImages.length);
}, 4000);
return () => clearInterval(interval);
}
});
}, [sectionImages.length]);
requestAnimationFrame(animate);
// Animate background images
useEffect(() => {
if (!backgroundRef.current) return;
const images = backgroundRef.current.children;
let index = 0;
const cycle = () => {
for (let i = 0; i < images.length; i++) {
if (i === index) {
images[i].style.opacity = '0.7';
images[i].style.transition = 'opacity 0.5s ease';
} else {
images[i].style.opacity = '0';
}
}
index = (index + 1) % images.length;
};
animate();
const interval = setInterval(cycle, 3000);
return () => clearInterval(interval);
}, []);
const handleResize = () => {
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
const scrollToSection = (e) => {
e.preventDefault();
const section = document.getElementById('section1');
section?.scrollIntoView({ behavior: 'smooth' });
};
window.addEventListener('resize', handleResize);
return () => window.removeEventListener('resize', handleResize);
}, []);
const togglePlayer = (albumId) => {
setShowPlayers(prev => ({
...prev,
[albumId]: !prev[albumId]
}));
};
const toggleAudio = () => {
if (audioRef.current) {
if (isPlaying) {
audioRef.current.pause();
} else {
audioRef.current.play();
}
setIsPlaying(!isPlaying);
}
};
const upcomingLives = lives.filter(live => new Date(live.date) > new Date());
const pastLives = lives.filter(live => new Date(live.date) <= new Date());
const albums = [
{
id: 'livecoding',
title: 'Livecoding (Opal Festival 2024)',
links: [
{ platform: 'YouTube', url: 'https://www.youtube.com/playlist?list=OLAK5uy_l4MF3OCIXcdPMpsHGVX2Q9MiX6oU1zT6g', icon: <FaYoutube /> },
{ platform: 'Deezer', url: 'https://www.deezer.com/us/album/656760591', icon: <FaDeezer /> },
{ platform: 'Spotify', url: 'https://open.spotify.com/album/1VKLZWeolFNfES2bWzYCWZ', icon: <FaSpotify /> },
{ platform: 'Apple', url: 'https://music.apple.com/fr/album/livecoding-opal-festival-2024/1773790990', icon: <FaApple /> },
{ platform: 'Tidal', url: 'https://listen.tidal.com/album/393127518', icon: <SiTidal /> },
{ platform: 'Amazon', url: 'https://amazon.com/dp/B0DK298L1X', icon: <FaAmazon /> }
]
},
{
id: 'connexion',
title: 'Connexion Etablie EP',
links: [
{ platform: 'YouTube', url: 'https://www.youtube.com/watch?v=VODSdQKrzyw&list=OLAK5uy_nzlx3b7YJYzrbagXF5swhENsCg5vJkT_Q', icon: <FaYoutube /> },
{ platform: 'Spotify', url: 'https://open.spotify.com/album/4uzSN6Uv9IwcYeHdRtkUmM', icon: <FaSpotify /> },
{ platform: 'Deezer', url: 'https://www.deezer.com/album/498443581', icon: <FaDeezer /> },
{ platform: 'Apple', url: 'https://music.apple.com/fr/album/_/1711226283', icon: <FaApple /> },
{ platform: 'Amazon', url: 'https://music.amazon.com/albums/B0CKTZMFDF', icon: <FaAmazon /> }
]
}
];
const socialLinks = [
{ icon: <FaEnvelope />, label: 'email', url: 'mailto:parvagues@nech.pl' },
{ icon: <SiMastodon />, label: 'mastodon', url: 'https://chaos.social/@PixelNoir' },
{ icon: <FaTwitter />, label: 'twitter', url: 'https://x.com/ParVagues' },
{ icon: <SiBluesky />, label: 'bluesky [soon]', url: '#' },
{ icon: <FaInstagram />, label: 'instagram', url: 'https://instagram.com/parvagues.mp3' }
];
const renderSectionContent = () => {
const sectionContent = sections[selectedSection];
if (!sectionContent) return null;
switch (sectionContent.type) {
case 'image':
return (
<div className="relative w-full aspect-video rounded-lg overflow-hidden shadow-xl">
<Image
src={sectionContent.image}
alt={selectedSection}
fill
className="object-cover"
/>
</div>
);
case 'carousel':
return (
<div className="relative w-full aspect-video rounded-lg overflow-hidden shadow-xl">
{sectionImages.map((image, index) => (
<Image
key={image}
src={image}
alt={`${selectedSection} ${index + 1}`}
fill
className={`object-cover transition-opacity duration-500 ${
index === currentImageIndex ? 'opacity-100' : 'opacity-0'
}`}
/>
))}
<div className="absolute bottom-4 left-1/2 transform -translate-x-1/2 flex gap-2">
{sectionImages.map((_, index) => (
<div
key={index}
className={`w-2 h-2 rounded-full transition-all ${
index === currentImageIndex
? 'bg-purple-400 w-6'
: 'bg-gray-400'
}`}
/>
))}
</div>
</div>
);
case 'code':
return (
<CodeBlock height="400px" isTerminal={true}>
{sectionContent.content || 'Chargement du code...'}
</CodeBlock>
);
default:
return null;
}
};
return (
<>
<Head>
<title>ParVagues - Musique Algorithmique Live</title>
<meta name="description" content="Performances de Livecoding: musique algorithmique du breakbeat à la Jungle Drum n Bass, nujazz, broken beat, ambient electronic, melodic technocyberpunk" />
<meta name="language" content="french" />
<meta name="author" content="ParVagues" />
<meta name="keywords" content="musique algorithmique, livecoding, live coding, tidalcycles, tidal, hydra, algorave, live music, live performance, musique, live, coding, open-source, free software" />
<meta name="robots" content="index, follow" />
<title>ParVagues - Musique Algorithmique</title>
<meta name="description" content="Livecoding de musique open-source avec TidalCycles et contrôleur MIDI" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="theme-color" content="#6B486B" />
<link rel="icon" href="/favicon.ico" />
</Head>
<div className="min-h-screen bg-gradient-to-br from-gray-900 via-purple-900 to-gray-900 text-white overflow-hidden relative">
<canvas
ref={rainRef}
className="fixed inset-0 pointer-events-none opacity-40"
style={{ mixBlendMode: 'screen' }}
/>
<div className="min-h-screen bg-black text-white">
{/* Sticky CTA */}
<a
href="mailto:parvagues@nech.pl?subject=Booking Request&body=Bonjour,%0D%0A%0D%0AJe souhaiterais discuter d'une possibilité de performance live coding."
className={styles.ctaButton}
>
<FaEnvelope className="inline mr-2" />
Invoquer un live
</a>
<div className="relative z-10">
{/* Hero Section */}
<section className="min-h-screen flex flex-col justify-center px-4 relative">
<div className="max-w-6xl mx-auto w-full">
<div className="flex flex-col md:flex-row items-center justify-between gap-8">
<div className="md:w-1/2 mb-8 md:mb-0">
<div className="relative w-full aspect-square md:aspect-[4/3] rounded-lg overflow-hidden mb-6">
<section className={styles.heroSection}>
<div className={styles.posterCollage} ref={backgroundRef}>
{posterImages.map((src, i) => (
<Image
src="/images/parvagues/live.jpg"
alt="ParVagues Live Performance"
key={i}
src={src}
alt={`Poster ${i + 1}`}
fill
className="object-cover"
priority
className={styles.posterImage}
priority={i < 3}
/>
))}
</div>
<h1 className="text-5xl md:text-7xl font-bold mb-4">
<span className="bg-gradient-to-r from-purple-400 via-pink-500 to-purple-600 bg-clip-text text-transparent">
{/* Audio element */}
<audio
ref={audioRef}
src="/parvagues.mp3"
loop
onPlay={() => setIsPlaying(true)}
onPause={() => setIsPlaying(false)}
/>
<div className={styles.contentOverlay}>
<div className={styles.heroContent}>
{/* Left side: Title and content */}
<div className="md:w-1/2">
<h1 className={`${styles.heroTitle} ${styles.glitchEffect}`}>
ParVagues
</span>
</h1>
<p className="text-xl text-gray-300 mb-8 font-mono">
live.coding() electronic.hybrid.genres() realtime.music()
<p className={styles.heroSubtitle}>
Livecoding de musique open-source avec TidalCycles et contrôleur MIDI
</p>
<a href="#section1" onClick={scrollToSection} className={styles.plungeButton}>
Plonger
</a>
</div>
<div className="md:w-1/2 space-y-8">
<div className="grid gap-4">
<CodeBlock>{`d1 $ every 4 (0.25 <~)
$ fast 2 $ sound "cp ho:3 mt lt"
d8 $ chop 16 $ loopAt 2
$ sound "jungle_breaks:45"`}</CodeBlock>
</div>
{/* Live Events Sidebar */}
<div className="bg-gray-800/50 backdrop-blur-sm rounded-lg p-6 border border-purple-500/20">
<h2 className="text-xl font-semibold mb-4 text-purple-400">// upcoming</h2>
{upcomingLives.length > 0 ? (
<div className="space-y-4 max-h-60 overflow-y-auto pr-2">
{upcomingLives.map(live => (
<Link key={live.slug} href={`/parvagues/live/${live.slug}`}>
<div className="cursor-pointer bg-gray-900/50 p-4 rounded hover:bg-gray-900/70 transition-colors">
<h3 className="font-semibold text-purple-300">{live.title}</h3>
<p className="text-sm text-gray-400">{live.date}</p>
<p className="text-xs text-gray-500">{live.location}</p>
</div>
</Link>
))}
</div>
{/* Right side: Code sample with play overlay */}
<div className="md:w-1/2 relative">
<div className="relative">
<CodeBlock height="300px" isTerminal={true}>
{tidalCode}
</CodeBlock>
{/* Pretty Play overlay */}
<button
onClick={toggleAudio}
className="absolute inset-0 bg-black/60 backdrop-blur-sm flex items-center justify-center transition-all duration-300 hover:bg-black/80 group"
>
<div className="bg-gradient-to-br from-purple-500 to-pink-500 rounded-full p-8 shadow-xl shadow-purple-500/50 transition-all duration-300 group-hover:scale-110 group-hover:shadow-2xl group-hover:shadow-purple-500/30">
{isPlaying ? (
<MdPause className="w-16 h-16 text-white" />
) : (
<p className="text-gray-400 text-sm">No upcoming events</p>
<MdPlayArrow className="w-16 h-16 text-white" />
)}
</div>
<div className="absolute bottom-4 left-1/2 transform -translate-x-1/2 text-sm text-purple-300 opacity-0 group-hover:opacity-100 transition-opacity">
{isPlaying ? 'Pause' : 'Écouter le mix'}
</div>
</button>
</div>
</div>
</section>
{/* Code Samples Section */}
<section className="py-20 px-4">
<div className="max-w-6xl mx-auto">
<h2 className="text-3xl font-bold mb-8 text-center">
<span className="bg-gradient-to-r from-purple-400 to-pink-600 bg-clip-text text-transparent">
Live Coding Samples
</span>
</h2>
<div className="grid md:grid-cols-2 gap-6">
<div className="bg-gray-800/50 backdrop-blur-sm rounded-lg p-6 border border-purple-500/20">
<h3 className="text-lg font-semibold mb-3 text-purple-400">Breakbeat Deconstruction</h3>
<CodeBlock>{`d8 $ n (cat[
0, 0, 0, [0,7],
0, [0,3], 0, [7,0],
0, 0, 7, [7,3],
[7,0], 0, [3,0], 7
])
# s "jungle_breaks"
# cut 8
# amp (range 0.7 1.2 rand)`}</CodeBlock>
</div>
<div className="bg-gray-800/50 backdrop-blur-sm rounded-lg p-6 border border-purple-500/20">
<h3 className="text-lg font-semibold mb-3 text-purple-400">Nujazz Harmonies</h3>
<CodeBlock>{`d4 $ every 8 (|+ n "<12 19>")
$ off 0.125 (|+ n 7)
$ chord "<am9 dm9 bm7b5 e7b9>"
# s "nujazz_keys"
# lpf (sine * 1000 + 1200)
# amp 0.8`}</CodeBlock>
</div>
</div>
</div>
</section>
{/* Visual Showcase */}
<section className="py-20 px-4">
<div className="max-w-6xl mx-auto">
<h2 className="text-3xl font-bold mb-12 text-center">
<span className="bg-gradient-to-r from-purple-400 to-pink-600 bg-clip-text text-transparent">
Visual Universe
</span>
</h2>
{/* Section 1: Interactive Sections */}
<section id="section1" className={styles.sectionContainer}>
<div className={styles.splitSection}>
<div>
<div
className={`${styles.bulletPoint} cursor-pointer ${selectedSection === 'potentiel' ? 'text-purple-400' : ''}`}
onClick={() => setSelectedSection('potentiel')}
>
<h3 className="text-xl font-semibold text-purple-400 mb-2">Potentiel</h3>
<p className="text-gray-300">Samples et synthés SuperCollider pour une palette sonore infinie</p>
</div>
<div className="grid md:grid-cols-3 gap-6">
<div className="aspect-video relative rounded-lg overflow-hidden">
<Image
src="/images/parvagues/gear1.jpg"
alt="Live Coding Setup"
fill
className="object-cover"
/>
<div
className={`${styles.bulletPoint} cursor-pointer ${selectedSection === 'composition' ? 'text-purple-400' : ''}`}
onClick={() => setSelectedSection('composition')}
>
<h3 className="text-xl font-semibold text-purple-400 mb-2">Composition</h3>
<p className="text-gray-300">Code Haskell TidalCycles pour des patterns algorithmiques complexes</p>
</div>
<div className="aspect-video relative rounded-lg overflow-hidden">
<Image
src="/images/parvagues/studio1.jpg"
alt="Studio Setup"
fill
className="object-cover"
/>
<div
className={`${styles.bulletPoint} cursor-pointer ${selectedSection === 'performance' ? 'text-purple-400' : ''}`}
onClick={() => setSelectedSection('performance')}
>
<h3 className="text-xl font-semibold text-purple-400 mb-2">Performance</h3>
<p className="text-gray-300">Live improvise avec contrôleur MIDI pour une interactivité totale</p>
</div>
</div>
<div className="aspect-video relative rounded-lg overflow-hidden">
<Image
src="/images/parvagues/gear2.jpg"
alt="Performance Setup"
fill
className="object-cover"
/>
<div>
<div className="mb-4 flex gap-4">
<button
onClick={() => setSelectedSection('code')}
className={`px-4 py-2 rounded-md transition-all ${
selectedSection === 'code'
? 'bg-purple-500 text-white'
: 'bg-gray-800 text-gray-300 hover:bg-gray-700'
}`}
>
Code
</button>
<button
onClick={() => setSelectedSection('potentiel')}
className={`px-4 py-2 rounded-md transition-all ${
selectedSection === 'potentiel'
? 'bg-purple-500 text-white'
: 'bg-gray-800 text-gray-300 hover:bg-gray-700'
}`}
>
Samples
</button>
</div>
{renderSectionContent()}
</div>
</div>
</section>
{/* Performance Carousel */}
<section className="py-20 px-4 overflow-hidden">
<div className="max-w-6xl mx-auto">
<h2 className="text-3xl font-bold mb-12 text-center">
{/* Section 2: Find me */}
<section className={styles.sectionContainer}>
<h2 className="text-3xl font-bold mb-8 text-center">
<span className="bg-gradient-to-r from-purple-400 to-pink-600 bg-clip-text text-transparent">
Live Performances
Tracks
</span>
</h2>
<div className="relative">
<Swiper
effect={'cards'}
grabCursor={true}
centeredSlides={true}
slidesPerView={'auto'}
spaceBetween={30}
className="w-full h-[60vh]"
<div className={styles.albumGrid}>
{albums.map(album => (
<div key={album.id} className={styles.albumCard}>
<h3 className="text-lg font-semibold mb-3">{album.title}</h3>
{!showPlayers[album.id] ? (
<button
onClick={() => togglePlayer(album.id)}
className="text-purple-400 hover:text-purple-300 text-sm transition-colors flex items-center gap-2"
>
<SwiperSlide className="relative rounded-lg overflow-hidden">
<Image
src="/images/parvagues/PXL_20241005_032846861.TS_exported_1474.jpg"
alt="Live Performance 1"
fill
className="object-cover"
/>
</SwiperSlide>
<SwiperSlide className="relative rounded-lg overflow-hidden">
<Image
src="/images/parvagues/signal-2024-09-27-20-41-19-515.jpg"
alt="Live Performance 2"
fill
className="object-cover"
/>
</SwiperSlide>
<SwiperSlide className="relative rounded-lg overflow-hidden">
<Image
src="/images/parvagues/IMG_5945_exported_77863~2.jpg"
alt="Live Performance 3"
fill
className="object-cover"
/>
</SwiperSlide>
<SwiperSlide className="relative rounded-lg overflow-hidden">
<Image
src="/images/parvagues/IMG-20230331-WA0001(1).jpg"
alt="Live Performance 4"
fill
className="object-cover"
/>
</SwiperSlide>
<SwiperSlide className="relative rounded-lg overflow-hidden">
<Image
src="/images/parvagues/img_9479.jpg"
alt="Live Performance 5"
fill
className="object-cover"
/>
</SwiperSlide>
</Swiper>
<MdPlayArrow /> Afficher les lecteurs
</button>
) : (
<div className={styles.playerContainer}>
{album.links.map(link => (
<a
key={link.platform}
href={link.url}
target="_blank"
rel="noopener noreferrer"
className={styles.playerButton}
>
{link.icon}
<span>{link.platform}</span>
</a>
))}
</div>
)}
</div>
))}
</div>
</section>
{/* Past Performances */}
<section className="py-20 px-4">
<div className="max-w-6xl mx-auto">
{/* Section 3: Reach me */}
<section className={styles.sectionContainer}>
<h2 className="text-3xl font-bold mb-8 text-center">
<span className="bg-gradient-to-r from-purple-400 to-pink-600 bg-clip-text text-transparent">
Archives
Reach me
</span>
</h2>
<div className="grid md:grid-cols-3 gap-6">
{pastLives.slice(0, 6).map(live => (
<Link key={live.slug} href={`/parvagues/live/${live.slug}`}>
<div className="cursor-pointer bg-gray-800/50 backdrop-blur-sm rounded-lg p-6 border border-purple-500/20 hover:border-purple-400 transition-all transform hover:scale-105">
<h3 className="font-semibold mb-2">{live.title}</h3>
<p className="text-sm text-gray-400 mb-1">{live.date}</p>
<p className="text-xs text-gray-500">{live.location}</p>
</div>
</Link>
<div className={styles.socialLinks}>
{socialLinks.map(link => (
<a
key={link.label}
href={link.url}
className={styles.socialLink}
target="_blank"
rel="noopener noreferrer"
>
{link.icon}
<span>{link.label}</span>
</a>
))}
</div>
{pastLives.length > 6 && (
<div className="text-center mt-8">
<button className="text-purple-400 hover:text-purple-300 transition-colors">
// show more archives
</button>
</div>
)}
</div>
</section>
{/* Footer */}
<footer className="py-8 px-4 border-t border-purple-500/20 bg-black/50">
<div className="max-w-6xl mx-auto text-center">
<p className="text-gray-400 text-sm">
© { new Date().getFullYear() } ParVagues | Algorithmic music
</p>
<div className="flex justify-center gap-4 mt-4">
<a href="https://www.deezer.com/us/artist/103670512" className="text-gray-400 hover:text-purple-400 transition-colors">
Deezer
</a>
<a href="https://open.spotify.com/intl-fr/artist/0kznTQnx5QRhMwktmZboX4" className="text-gray-400 hover:text-purple-400 transition-colors">
Spotify
</a>
<a href="https://www.youtube.com/@parvagues" className="text-gray-400 hover:text-purple-400 transition-colors">
YouTube
</a>
<a href="https://soundcloud.com/parvagues" className="text-gray-400 hover:text-purple-400 transition-colors">
SoundCloud
</a>
<a href="https://parvagues.bandcamp.com/" className="text-gray-400 hover:text-purple-400 transition-colors">
Bandcamp
</a>
<a href="https://instagram.com/parvagues.mp3" className="text-gray-400 hover:text-purple-400 transition-colors">
Instagram
</a>
</div>
</div>
<footer className={styles.footer}>
<p className="text-gray-400">© {new Date().getFullYear()} ParVagues</p>
<Link href="/" className="mt-4 inline-block text-gray-500 text-sm hover:text-purple-400 transition-colors">
[more PLN Works]
</Link>
</footer>
</div>
</div>
</>
);
}
......@@ -398,6 +512,6 @@ export async function getStaticProps() {
props: {
lives,
},
revalidate: 60, // Revalidate every minute
revalidate: 60,
};
}
......@@ -3,14 +3,29 @@ import { getAllLives, getLiveData, getLivesImages } from '../../../lib/livesData
import ImageGallery from '../../../components/ImageGallery';
import Head from 'next/head';
import Link from 'next/link';
import Image from 'next/image';
import { marked } from 'marked';
import Prism from 'prismjs';
import 'prismjs/components/prism-haskell';
import 'prismjs/themes/prism-tomorrow.css';
import styles from '../../../styles/parvagues.module.css';
export default function Live({ data, slug, images }) {
const [timeToEvent, setTimeToEvent] = useState(null);
const [currentTeasing, setCurrentTeasing] = useState(null);
const [posterImage, setPosterImage] = useState(null);
const [mainColor, setMainColor] = useState('#a855f7');
// Find poster image
useEffect(() => {
if (images && images.length > 0) {
const poster = images.find(img => img.includes('poster.'));
if (poster) {
setPosterImage(poster);
// Here you could use a color extraction library like 'color-thief' to get dominant color
// For now, using default purple
}
}
}, [images]);
useEffect(() => {
if (typeof window !== 'undefined') {
......@@ -60,28 +75,58 @@ export default function Live({ data, slug, images }) {
<meta name="description" content={data.frontmatter.description} />
</Head>
<div className="min-h-screen bg-gradient-to-br from-gray-900 via-purple-900 to-gray-900 text-white">
<nav className="sticky top-0 bg-black/50 backdrop-blur-sm border-b border-purple-500/20">
<div
className="min-h-screen text-white relative overflow-hidden"
style={{
background: `radial-gradient(circle at 50% 0%, ${mainColor}20 0%, #000 60%)`
}}
>
{/* Gradient overlay */}
<div className="fixed inset-0" style={{
background: `linear-gradient(135deg, #000 0%, ${mainColor}10 50%, #000 100%)`
}} />
<div className="relative z-10">
<nav className="sticky top-0 bg-black/60 backdrop-blur-md border-b border-purple-500/20">
<div className="max-w-6xl mx-auto px-4 py-4">
<Link href="/parvagues" className="text-purple-400 hover:text-purple-300 transition-colors">
Retour ParVagues
ParVagues
</Link>
</div>
</nav>
<main className="max-w-6xl mx-auto px-4 py-8">
<div className="mb-8">
<h1 className="text-4xl font-bold mb-2 bg-gradient-to-r from-purple-400 to-pink-600 bg-clip-text text-transparent">
{/* Visible Poster Section */}
{posterImage && (
<div className="max-w-2xl mx-auto mb-8">
<div className="relative w-full aspect-[3/4] rounded-lg overflow-hidden shadow-xl shadow-purple-500/20">
<Image
src={posterImage}
alt={data.frontmatter.title}
fill
className="object-cover"
/>
</div>
</div>
)}
<div className="mb-8 text-center">
<h1 className="text-4xl font-bold mb-2">
<span className={`bg-gradient-to-r from-purple-400 via-pink-500 to-purple-600 bg-clip-text text-transparent ${styles.glitchEffect}`}>
{data.frontmatter.title}
</span>
</h1>
<p className="text-gray-400">{data.frontmatter.location} - {data.frontmatter.date}</p>
<p className="text-gray-400">{data.frontmatter.location} {data.frontmatter.date}</p>
{data.frontmatter.time && (
<p className="text-gray-500 text-sm">{data.frontmatter.time}</p>
)}
</div>
{timeToEvent !== null && timeToEvent >= 0 ? (
// Pre-event view
<div className="space-y-8">
<div className="text-center">
<div className="inline-block bg-gradient-to-r from-purple-500 to-pink-500 p-8 rounded-lg">
<div className="inline-block bg-gradient-to-r from-purple-500 to-pink-500 p-8 rounded-lg shadow-lg shadow-purple-500/20">
<div className="text-6xl font-mono mb-2">{timeToEvent}</div>
<div className="text-gray-200">jours restants</div>
</div>
......@@ -92,9 +137,9 @@ export default function Live({ data, slug, images }) {
</div>
{currentTeasing && (
<div className="bg-gray-800/50 backdrop-blur-sm rounded-lg p-6 border border-purple-500/20">
<div className="bg-black/40 backdrop-blur-sm rounded-lg p-6 border border-purple-500/20">
<div
className="prose prose-purple prose-invert prose-pre:bg-gray-900 prose-pre:border prose-pre:border-purple-500/20 max-w-none"
className="prose prose-purple prose-invert prose-pre:bg-gray-900/50 prose-pre:border prose-pre:border-purple-500/20 max-w-none"
dangerouslySetInnerHTML={renderMarkdown(currentTeasing)}
/>
</div>
......@@ -104,7 +149,7 @@ export default function Live({ data, slug, images }) {
<div className="text-center">
<a
href={data.frontmatter.ctaURL}
className="inline-block bg-gradient-to-r from-purple-500 to-pink-500 text-white px-8 py-3 rounded-lg font-semibold hover:from-purple-600 hover:to-pink-600 transition-all transform hover:scale-105"
className="inline-block bg-gradient-to-r from-purple-500 to-pink-500 text-white px-8 py-3 rounded-lg font-semibold hover:from-purple-600 hover:to-pink-600 transition-all transform hover:scale-105 shadow-lg shadow-purple-500/20"
>
{data.frontmatter.ctaText || data.frontmatter.title}
</a>
......@@ -121,13 +166,13 @@ export default function Live({ data, slug, images }) {
{(data.frontmatter.video || data.frontmatter.audio) && (
<div className="grid md:grid-cols-2 gap-6">
{data.frontmatter.video && (
<a href={data.frontmatter.video} className="block bg-gray-800/50 backdrop-blur-sm rounded-lg p-6 border border-purple-500/20 hover:border-purple-400 transition-colors">
<a href={data.frontmatter.video} className="block bg-black/40 backdrop-blur-sm rounded-lg p-6 border border-purple-500/20 hover:border-purple-400 transition-colors">
<h3 className="text-xl font-semibold mb-2">📹 Vidéo</h3>
<p className="text-gray-400">Regarder la session</p>
</a>
)}
{data.frontmatter.audio && (
<a href={data.frontmatter.audio} className="block bg-gray-800/50 backdrop-blur-sm rounded-lg p-6 border border-purple-500/20 hover:border-purple-400 transition-colors">
<a href={data.frontmatter.audio} className="block bg-black/40 backdrop-blur-sm rounded-lg p-6 border border-purple-500/20 hover:border-purple-400 transition-colors">
<h3 className="text-xl font-semibold mb-2">🎵 Audio</h3>
<p className="text-gray-400">Écouter l'enregistrement</p>
</a>
......@@ -140,15 +185,15 @@ export default function Live({ data, slug, images }) {
)}
<details className="group">
<summary className="cursor-pointer p-4 bg-gray-800/30 rounded-lg hover:bg-gray-800/50 transition-colors">
<summary className="cursor-pointer p-4 bg-black/30 rounded-lg hover:bg-black/50 transition-colors border border-purple-500/10">
<span className="font-mono text-purple-400">// decrypt teasings</span>
</summary>
<div className="mt-4 space-y-4 pl-4 border-l-2 border-purple-500/20">
{[data.frontmatter.teasing1, data.frontmatter.teasing2, data.frontmatter.teasing3].map((teasing, i) =>
teasing && (
<div key={i} className="bg-gray-800/20 rounded p-4">
<div key={i} className="bg-black/20 rounded p-4">
<div
className="prose prose-purple prose-invert prose-pre:bg-gray-900 prose-pre:border prose-pre:border-purple-500/20 max-w-none text-sm"
className="prose prose-purple prose-invert prose-pre:bg-gray-900/50 prose-pre:border prose-pre:border-purple-500/20 max-w-none text-sm"
dangerouslySetInnerHTML={renderMarkdown(teasing)}
/>
</div>
......@@ -160,6 +205,7 @@ export default function Live({ data, slug, images }) {
)}
</main>
</div>
</div>
</>
);
}
......
/* ParVagues specific styles */
.heroSection {
min-height: 100vh;
position: relative;
overflow: hidden;
}
.bgImage {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
object-fit: cover;
opacity: 0.4;
filter: blur(8px);
transform: scale(1.1);
}
.contentOverlay {
position: relative;
z-index: 10;
min-height: 100vh;
background: linear-gradient(135deg, rgba(9,9,11,0.95) 0%, rgba(88,28,135,0.9) 50%, rgba(9,9,11,0.95) 100%);
}
.heroContent {
padding: 0 1rem;
max-width: 1400px;
margin: 0 auto;
width: 100%;
min-height: 100vh;
display: flex;
align-items: center;
justify-content: space-between;
gap: 4rem;
}
@media (max-width: 768px) {
.heroContent {
flex-direction: column;
justify-content: center;
gap: 2rem;
}
}
.heroTitle {
font-size: clamp(4rem, 12vw, 9rem);
font-weight: 800;
margin-bottom: 1rem;
background: linear-gradient(45deg, #a855f7, #ec4899, #8b5cf6);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
line-height: 0.9;
letter-spacing: -0.05em;
}
.heroSubtitle {
font-size: clamp(1.125rem, 3vw, 1.5rem);
color: rgba(255, 255, 255, 0.8);
max-width: 600px;
line-height: 1.5;
margin-bottom: 3rem;
}
.ctaButton {
position: fixed;
top: 1.5rem;
right: 1.5rem;
z-index: 50;
background: rgba(0, 0, 0, 0.6);
backdrop-filter: blur(8px);
border: 1px solid rgba(168, 85, 247, 0.3);
padding: 0.75rem 1.5rem;
border-radius: 0.5rem;
color: #a855f7;
transition: all 0.3s ease;
text-decoration: none;
font-weight: 500;
}
.ctaButton:hover {
background: rgba(168, 85, 247, 0.1);
border-color: #a855f7;
color: #ec4899;
}
.plungeButton {
display: inline-flex;
align-items: center;
background: linear-gradient(45deg, #a855f7, #ec4899);
color: white;
padding: 1rem 2rem;
border-radius: 0.5rem;
font-weight: 600;
text-decoration: none;
transition: all 0.3s ease;
gap: 0.5rem;
}
.plungeButton:hover {
transform: translateY(-2px);
box-shadow: 0 10px 20px rgba(168, 85, 247, 0.3);
}
.sectionContainer {
padding: 5rem 1rem;
max-width: 1200px;
margin: 0 auto;
width: 100%;
}
.splitSection {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 4rem;
align-items: center;
}
@media (max-width: 768px) {
.splitSection {
grid-template-columns: 1fr;
gap: 2rem;
}
}
.bulletPoint {
margin-bottom: 1.5rem;
padding-left: 2rem;
position: relative;
}
.bulletPoint::before {
content: "→";
position: absolute;
left: 0;
color: #a855f7;
font-weight: bold;
}
.codeContainer {
background: rgba(0, 0, 0, 0.7);
border: 1px solid rgba(168, 85, 247, 0.2);
border-radius: 0.5rem;
overflow: hidden;
position: relative;
}
.terminalContainer {
background: #1e1e1e;
border: 1px solid #333;
border-radius: 0.5rem;
overflow: hidden;
}
.terminalHeader {
background: #363636;
padding: 0.5rem 1rem;
display: flex;
align-items: center;
justify-content: space-between;
border-bottom: 1px solid #444;
}
.terminalControls {
display: flex;
gap: 0.5rem;
}
.redCircle, .yellowCircle, .greenCircle {
width: 12px;
height: 12px;
border-radius: 50%;
}
.redCircle {
background: #ff5f56;
}
.yellowCircle {
background: #ffbd2e;
}
.greenCircle {
background: #27ca42;
}
.terminalTitle {
font-family: monospace;
font-size: 0.875rem;
color: #ddd;
}
.terminalContainer pre {
background: #1e1e1e;
color: #f8f8f2;
padding: 1rem;
margin: 0;
font-family: 'Menlo', 'Monaco', 'Courier New', monospace;
font-size: 0.875rem;
line-height: 1.5;
}
.codeContainer pre {
max-height: inherit;
overflow-y: auto;
margin: 0;
padding: 1rem;
}
.codeContainer::-webkit-scrollbar,
.terminalContainer pre::-webkit-scrollbar {
width: 6px;
}
.codeContainer::-webkit-scrollbar-track,
.terminalContainer pre::-webkit-scrollbar-track {
background: rgba(0, 0, 0, 0.3);
}
.codeContainer::-webkit-scrollbar-thumb,
.terminalContainer pre::-webkit-scrollbar-thumb {
background: #a855f7;
border-radius: 3px;
}
.albumGrid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 2rem;
margin-top: 3rem;
}
.albumCard {
background: rgba(0, 0, 0, 0.4);
border: 1px solid rgba(168, 85, 247, 0.2);
border-radius: 0.5rem;
padding: 1.5rem;
transition: all 0.3s ease;
}
.albumCard:hover {
background: rgba(168, 85, 247, 0.05);
border-color: #a855f7;
transform: translateY(-2px);
}
.playerContainer {
margin-top: 1rem;
display: grid;
gap: 0.5rem;
}
.playerButton {
display: inline-flex;
align-items: center;
gap: 0.5rem;
color: rgba(255, 255, 255, 0.8);
text-decoration: none;
padding: 0.5rem 0.75rem;
transition: all 0.3s ease;
font-size: 0.875rem;
border-radius: 0.25rem;
background: rgba(168, 85, 247, 0.1);
border: 1px solid rgba(168, 85, 247, 0.2);
}
.playerButton:hover {
color: #a855f7;
background: rgba(168, 85, 247, 0.2);
border-color: #a855f7;
transform: translateY(-1px);
}
.socialLinks {
display: flex;
flex-wrap: wrap;
gap: 1rem;
justify-content: center;
margin-top: 2rem;
}
.socialLink {
color: rgba(255, 255, 255, 0.6);
text-decoration: none;
transition: all 0.3s ease;
padding: 0.75rem 1.5rem;
border: 1px solid rgba(255, 255, 255, 0.1);
border-radius: 0.5rem;
display: inline-flex;
align-items: center;
gap: 0.5rem;
background: rgba(0, 0, 0, 0.3);
}
.socialLink:hover {
color: #a855f7;
border-color: #a855f7;
background: rgba(168, 85, 247, 0.05);
transform: translateY(-2px);
}
.bulletPoint.cursor-pointer:hover {
background: rgba(168, 85, 247, 0.05);
border-radius: 0.5rem;
}
.footer {
text-align: center;
padding: 2rem;
border-top: 1px solid rgba(168, 85, 247, 0.1);
background: rgba(0, 0, 0, 0.5);
}
.posterCollage {
position: absolute;
inset: 0;
opacity: 0.6;
filter: blur(4px);
display: grid;
grid-template-columns: repeat(4, 1fr);
grid-template-rows: repeat(3, 1fr);
gap: 0.5rem;
}
.posterImage {
width: 100%;
height: 100%;
object-fit: cover;
opacity: 0.7;
}
.glitchEffect {
animation: glitch 8s linear infinite;
}
@keyframes glitch {
0% {
filter: none;
}
2% {
filter: hue-rotate(90deg);
}
3% {
filter: none;
}
4% {
clip-path: polygon(0 0, 100% 0, 100% 35%, 0 35%);
transform: translateX(-2px);
}
5% {
transform: translateX(0);
clip-path: none;
}
97% {
filter: none;
}
98% {
filter: invert(0.1);
}
99% {
filter: none;
}
}
This source diff could not be displayed because it is too large. You can view the blob instead.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment