diff --git a/package-lock.json b/package-lock.json index 450ee6e..ffe4db8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -155,7 +155,7 @@ "amdefine": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=" + "integrity": "sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==" }, "ansi-align": { "version": "2.0.0", @@ -280,9 +280,9 @@ "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" }, "are-we-there-yet": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", - "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", + "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", "requires": { "delegates": "^1.0.0", "readable-stream": "^2.0.6" @@ -456,7 +456,7 @@ "async-foreach": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz", - "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=" + "integrity": "sha512-VUeSMD8nEGBWaZK4lizI1sf3yEC7pnAQ/mrI7pC2fBz2s/tq5jWWEngTwaf0Gruu/OoXRGLGg1XFqpYBiGTYJA==" }, "asynckit": { "version": "0.4.0", @@ -1405,10 +1405,19 @@ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=" }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, "block-stream": { "version": "0.0.9", "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", - "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", + "integrity": "sha512-OorbnJVPII4DuUKbjARAe8u8EfqOmkEEaSFIyoQ7OjTHn6kafxWl0wLgoZ2rXaYd7MyLcDaU4TmhfxtwgcccMQ==", "requires": { "inherits": "~2.0.0" } @@ -2200,7 +2209,7 @@ "console-control-strings": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==" }, "constants-browserify": { "version": "1.0.0", @@ -2729,7 +2738,7 @@ "delegates": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" }, "depd": { "version": "1.1.2", @@ -3928,6 +3937,12 @@ "schema-utils": "^0.3.0" } }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "optional": true + }, "filename-regex": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", @@ -4111,6 +4126,8 @@ "integrity": "sha512-+ux3lx6peh0BpvY0JebGyZoiR4D+oYzdPZMKJwkZ+sFkNJzpL7tXc/wehS49gUAxg3tmMHPHZkA8JU2rhhgDHw==", "optional": true, "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1", "node-pre-gyp": "*" }, "dependencies": { @@ -4622,7 +4639,7 @@ "gauge": { "version": "2.7.4", "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "integrity": "sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==", "requires": { "aproba": "^1.0.3", "console-control-strings": "^1.0.0", @@ -4637,7 +4654,7 @@ "is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", "requires": { "number-is-nan": "^1.0.0" } @@ -4645,7 +4662,7 @@ "string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -4769,13 +4786,20 @@ } }, "globule": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.1.tgz", - "integrity": "sha512-OVyWOHgw29yosRHCHo7NncwR1hW5ew0W/UrvtwvjefVJeQ26q4/8r8FmPsSF1hJ93IgWkyv16pCTz6WblMzm/g==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.4.tgz", + "integrity": "sha512-OPTIfhMBh7JbBYDpa5b+Q5ptmMWKwcNcFSR/0c6t8V4f3ZAVBEsKNY37QdVqmLRYSMhOUGYrY0QhSoEpzGr/Eg==", "requires": { "glob": "~7.1.1", - "lodash": "~4.17.12", + "lodash": "^4.17.21", "minimatch": "~3.0.2" + }, + "dependencies": { + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + } } }, "got": { @@ -4903,7 +4927,7 @@ "has-unicode": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" }, "has-value": { "version": "1.0.0", @@ -5344,9 +5368,9 @@ "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" }, "in-publish": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz", - "integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E=" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.1.tgz", + "integrity": "sha512-oDM0kUSNFC31ShNxHKUyfZKy8ZeXZBWMjMdZHKLOk13uvT27VTL/QzRGfRUcevJhpkZAvlhPYuXkF7eNWrtyxQ==" }, "indent-string": { "version": "2.1.0", @@ -7112,6 +7136,11 @@ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=" }, + "nan": { + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", + "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==" + }, "nanomatch": { "version": "1.2.13", "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", @@ -7185,7 +7214,7 @@ "semver": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=" + "integrity": "sha512-mfmm3/H9+67MCVix1h+IXTpDwL6710LyHuk7+cWC9T1mE0qz4iHhh6r4hU2wrIT9iTsAAC2XQRvfblL028cpLw==" } } }, @@ -7243,9 +7272,9 @@ } }, "node-sass": { - "version": "4.13.1", - "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.13.1.tgz", - "integrity": "sha512-TTWFx+ZhyDx1Biiez2nB0L3YrCZ/8oHagaDalbuBSlqXgUPsdkUSzJsVxeDO9LtPB49+Fh3WQl3slABo6AotNw==", + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.14.1.tgz", + "integrity": "sha512-sjCuOlvGyCJS40R8BscF5vhVlQjNN069NtQ1gSxyK1u9iqvn6tf7O1R4GNowVZfiZUCRt5MmMs1xd+4V/7Yr0g==", "requires": { "async-foreach": "^0.1.3", "chalk": "^1.1.1", @@ -7261,15 +7290,15 @@ "node-gyp": "^3.8.0", "npmlog": "^4.0.0", "request": "^2.88.0", - "sass-graph": "^2.2.4", + "sass-graph": "2.2.5", "stdout-stream": "^1.4.0", "true-case-path": "^1.0.2" }, "dependencies": { "ajv": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", - "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "requires": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -7278,38 +7307,33 @@ } }, "aws4": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz", - "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==" + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", + "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==" }, "cross-spawn": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz", - "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=", + "integrity": "sha512-eZ+m1WNhSZutOa/uRblAc9Ut5MQfukFrFMtPSm3bZCA888NmMd5AWXWdgRZ80zd+pTk1P2JrGjg9pUPTvl2PWQ==", "requires": { "lru-cache": "^4.0.1", "which": "^1.2.9" } }, "fast-deep-equal": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", - "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==" + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "har-validator": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", - "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", "requires": { - "ajv": "^6.5.5", + "ajv": "^6.12.3", "har-schema": "^2.0.0" } }, - "nan": { - "version": "2.14.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", - "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==" - }, "oauth-sign": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", @@ -7356,7 +7380,7 @@ "nopt": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "integrity": "sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg==", "requires": { "abbrev": "1" } @@ -9323,6 +9347,11 @@ "prop-types": "^15.5.6" } }, + "react-responsive-masonry": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/react-responsive-masonry/-/react-responsive-masonry-2.1.7.tgz", + "integrity": "sha512-/jOqnTVNtO8zRJMTl6ZXBex7EFYEIFBLVlkIFjiCT7omfm0CgNF2z4ST8RIr0v2ut15NWAQs7Q3kJJPhMoe3Ew==" + }, "react-router": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/react-router/-/react-router-4.3.1.tgz", @@ -9866,14 +9895,153 @@ } }, "sass-graph": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz", - "integrity": "sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=", + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.5.tgz", + "integrity": "sha512-VFWDAHOe6mRuT4mZRd4eKE+d8Uedrk6Xnh7Sh9b4NGufQLQjOrvf/MQoOdx+0s92L89FeyUUNfU597j/3uNpag==", "requires": { "glob": "^7.0.0", "lodash": "^4.0.0", "scss-tokenizer": "^0.2.3", - "yargs": "^7.0.0" + "yargs": "^13.3.2" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==" + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "requires": { + "locate-path": "^3.0.0" + } + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==" + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + } + }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + }, + "yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + } + }, + "yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } } }, "sass-loader": { @@ -9943,7 +10111,7 @@ "scss-tokenizer": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", - "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=", + "integrity": "sha512-dYE8LhncfBUar6POCxMTm0Ln+erjeczqEvCJib5/7XNkdw1FkUGgwMPY360FY0FgPWQxHWCx29Jl3oejyGLM9Q==", "requires": { "js-base64": "^2.1.8", "source-map": "^0.4.2" @@ -9952,7 +10120,7 @@ "source-map": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "integrity": "sha512-Y8nIfcb1s/7DcobUz1yOO1GSp7gyL+D9zLHDehT7iRESqGSxjJ448Sg7rvfgsRJCnKLdSl11uGf0s9X80cH0/A==", "requires": { "amdefine": ">=0.0.4" } @@ -11718,11 +11886,11 @@ "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=" }, "wide-align": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", "requires": { - "string-width": "^1.0.2 || 2" + "string-width": "^1.0.2 || 2 || 3 || 4" } }, "widest-line": { diff --git a/package.json b/package.json index 0ea549f..fde08d0 100644 --- a/package.json +++ b/package.json @@ -59,7 +59,7 @@ "gsap": "^2.0.2", "html-webpack-plugin": "2.29.0", "jest": "20.0.4", - "node-sass": "^4.13.1", + "node-sass": "^4.14.1", "object-assign": "4.1.1", "path": "^0.12.7", "postcss-flexbugs-fixes": "3.2.0", @@ -72,6 +72,7 @@ "react-dom": "^16.12.0", "react-emojione": "^5.0.1", "react-player": "^1.6.4", + "react-responsive-masonry": "^2.1.7", "react-router": "^4.3.1", "react-router-dom": "^4.3.1", "react-textfit": "^1.1.0", diff --git a/src/index.js b/src/index.js index f02bca6..259bec0 100644 --- a/src/index.js +++ b/src/index.js @@ -9,6 +9,7 @@ import Projects from "./js/projects.jsx"; import Hackpacks from "./js/hackpacks.jsx"; import RoomStatus from "./js/room-status.jsx"; import Apis from "./js/apis/Apis.jsx"; + import Challenge from "./js/challenge.jsx"; import "./favicons/favicons"; import "./index.scss"; diff --git a/src/js/apis/Apis.jsx b/src/js/apis/Apis.jsx index cb7f9e2..1aa75ae 100644 --- a/src/js/apis/Apis.jsx +++ b/src/js/apis/Apis.jsx @@ -1,17 +1,17 @@ import React, { useEffect, useState } from "react"; import Bricklayer from "bricklayer"; import data from "./data.yaml"; +import Masonry, { ResponsiveMasonry } from "react-responsive-masonry"; export default class extends React.Component { constructor(props) { super(props); - this.myRef = React.createRef(); this.state = { tag: null, searchInput: "", companyData: data.companies, + constantCompanyData: data.companies, }; - this.onTagClick = this.onTagClick.bind(this); this.handleChange = this.handleChange.bind(this); } @@ -19,8 +19,10 @@ export default class extends React.Component { e.preventDefault(); this.setState({ searchInput: e.target.value }); //const dataC = [{ name: "Belgium", continent: "Europe" }]; - if (this.state.searchInput.length > 0) { - const filtered = this.state.companyData.filter( + if (this.state.searchInput.length == 0) { + this.setState({ companyData: this.state.constantCompanyData }); + } else if (this.state.searchInput.length > 0) { + const filtered = this.state.constantCompanyData.filter( (country) => country.apis[0].title .toLowerCase() @@ -45,23 +47,6 @@ export default class extends React.Component { project.submitLastName?.includes(search) );*/ - componentDidMount() { - this.bricklayer = new Bricklayer(this.myRef.current); - } - onTagClick(tag) { - this.bricklayer.destroy(); - - if (tag == this.state.tag) { - this.setState({ tag: null }, () => { - this.bricklayer = new Bricklayer(this.myRef.current); - }); - } else { - this.setState({ tag: tag }, () => { - this.bricklayer = new Bricklayer(this.myRef.current); - }); - } - } - render() { return (
@@ -80,12 +65,14 @@ export default class extends React.Component { Here you can find a list of all the API's offered by our sponsoring companies, along with any resources and forms we post to receive cloud credits. - {/* */} + /> {/* {(data.tags || []).map((tag) => (
-
- {this.state.companyData.map((company) => - company.apis.map((api) => { - if ( - this.state.tag == null || - (api.tags && api.tags.includes(this.state.tag)) - ) { - return ( -
-
-

{api.title}

-

{api.description}

- {company.slack && ( -

- slack: #{company.slack} -

- )} - {console.log(api)} - {api.links != null && - api.links.map((link) => ( - - - - ))} + + + {this.state.companyData.map((company) => + company.apis.map((api) => { + if ( + this.state.tag == null || + (api.tags && api.tags.includes(this.state.tag)) + ) { + return ( +
+
+

{api.title}

+

{api.description}

+ {company.slack && ( +

+ slack: #{company.slack} +

+ )} + {console.log(api)} + {api.links != null && + api.links.map((link) => ( + + + + ))} +
-
- ); - } else { - return null; - } - }) - )} -
+ ); + } else { + return null; + } + }) + )} + {this.state.companyData.length == 0 && ( +
+

+ No results found +

+
+ )} + + +
); } diff --git a/src/js/apis/data.yaml b/src/js/apis/data.yaml index c070d26..621316d 100644 --- a/src/js/apis/data.yaml +++ b/src/js/apis/data.yaml @@ -104,7 +104,7 @@ companies: url: https://docs.mem.ai/ tags: - Geospatial - - company: Mem + - company: Convex apis: - title: Convex API description: Convex platform getting started, usage docs, and reference APIs @@ -113,3 +113,12 @@ companies: url: https://docs.convex.dev/tutorial tags: - Geospatial + - company: Algolia + apis: + - title: Algolia API + description: Algolia has set up the "1 month free" for TreeHacks 2023 hackers, hackers can redeem it at https://algolia.com/redeem using the code TREEHACKS23 + links: + - title: Redeem here + url: https://algolia.com/redeem + tags: + - Geospatial diff --git a/src/js/event-schedule.js b/src/js/event-schedule.js index 8cbea51..0034f10 100644 --- a/src/js/event-schedule.js +++ b/src/js/event-schedule.js @@ -29,7 +29,10 @@ export default Vue.component("event-schedule", { +
+ +
@@ -41,10 +44,14 @@ export default Vue.component("event-schedule", {
+
+ Coming soon! We are still finalizing the incredible lineup and schedule for these events! +
+
@@ -131,6 +138,11 @@ export default Vue.component("event-schedule", { color: "#E51B5D", items: [], }, + { + name: "Food", + color: "#0089B6", + items: [], + }, { name: "Special Talks / Events", color: "#513ec3", @@ -495,15 +507,15 @@ export default Vue.component("event-schedule", { // this.calendar.download("treeHacksSchedule2021") // } if (this.selectedCat === 0) { - this.calendar0.download("mainEvents2021"); + this.calendar0.download("mainEvents2023"); } else if (this.selectedCat === 1) { - this.calendar1.download("hackX2021"); + this.calendar1.download("hackX2023"); } else if (this.selectedCat === 2) { - this.calendar2.download("workshops2021"); + this.calendar2.download("workshops2023"); } else if (this.selectedCat === 3) { - this.calendar3.download("officeHours2021"); + this.calendar3.download("officeHours2023"); } else { - this.calendar.download("treeHacksSchedule2021"); + this.calendar.download("treeHacksSchedule2023"); } }, hidePopup: function (e) { diff --git a/src/js/prizeData.json b/src/js/prizeData.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/src/js/prizeData.json @@ -0,0 +1 @@ +{} diff --git a/src/js/prizes/Prizes.jsx b/src/js/prizes/Prizes.jsx index 3b78865..a98ecfe 100644 --- a/src/js/prizes/Prizes.jsx +++ b/src/js/prizes/Prizes.jsx @@ -1,176 +1,67 @@ import React, { useEffect, useState } from "react"; import Bricklayer from "bricklayer"; -import data from "./data.yaml"; +import Logo from "../../logos/treehacks_logo.webp"; +import Otsuka from "../../logos/otsuka.webp"; +import Estuary from "../../logos/estuary.webp"; +import Convex from "../../logos/convex.webp"; +import InterSystems from "../../logos/intersystems.webp"; +import OpenAI from "../../logos/OpenAI.webp"; +import Vercel from "../../logos/vercel.webp"; +import Citadel from "../../logos/citadel.webp"; +import You from "../../logos/you.webp"; +import Skydio from "../../logos/skydio.webp"; +import Cadence from "../../logos/cadence.webp"; +import Arduino from "../../logos/arduino.webp"; +import Zetachain from "../../logos/zetachain.webp"; +import Phri from "../../logos/phri.webp"; +import Mem from "../../logos/mem.webp"; +import Cypherd from "../../logos/cypherd.webp"; +import HRT from "../../logos/hrt.webp"; +import Meta from "../../logos/meta.webp"; +import Cisco from "../../logos/cisco.webp"; +import SquareL from "../../logos/square.webp"; +import Retool from "../../logos/retool.webp"; +import Dolby from "../../logos/dolby.webp"; +import Warp from "../../logos/warp.webp"; +import Bnb from "../../logos/bnb.webp"; +import Checkbook from "../../logos/checkbook.webp"; +import Parrot from "../../logos/parrot.webp"; +import YCombinator from "../../logos/ycombinator.webp"; +import Neo from "../../logos/neo.webp"; +import Pear from "../../logos/pear.webp"; +import GeneralTask from "../../logos/generaltask.webp"; +import Replit from "../../logos/replit.webp"; +import Algolia from "../../logos/algolia.webp"; +import Wolfram from "../../logos/wolfram.webp"; +import Makerbot from "../../logos/makerbot.webp"; +import Twilio from "../../logos/twilio.webp"; +import Supabase from "../../logos/supabase.webp"; +import Voiceflow from "../../logos/voiceflow.webp"; +import Aptos from "../../logos/aptos.webp"; +import Near from "../../logos/near.webp"; +import Masonry, { ResponsiveMasonry } from "react-responsive-masonry"; export default class extends React.Component { constructor(props) { super(props); this.myRef = React.createRef(); this.myRef2 = React.createRef(); - this.myRef3 = React.createRef(); - - this.state = { - tag: null, - searchInput: "", - companyData: data.companies, - }; - this.onTagClick = this.onTagClick.bind(this); - this.handleChange = this.handleChange.bind(this); - } - - handleChange = (e) => { - e.preventDefault(); - this.setState({ searchInput: e.target.value }); - //const dataC = [{ name: "Belgium", continent: "Europe" }]; - if (this.state.searchInput.length > 0) { - const filtered = this.state.companyData.filter( - (country) => - country.apis[0].title - .toLowerCase() - .includes(this.state.searchInput) || - country.apis[0].description - .toLowerCase() - .includes(this.state.searchInput) - ); - this.setState({ companyData: filtered }); - console.log(filtered); - } - }; - - /* - - const filtered = constantProjectData.filter( - (project) => - project.projectTitle?.includes(search) || - project.projectDescription?.includes(search) || - project.builders?.includes(search) || - project.submitFirstName?.includes(search) || - project.submitLastName?.includes(search) - );*/ - - componentDidMount() { - this.bricklayer = new Bricklayer(this.myRef.current); - this.bricklayer2 = new Bricklayer(this.myRef2.current); - this.bricklayer3 = new Bricklayer(this.myRef3.current); - } - onTagClick(tag) { - this.bricklayer.destroy(); - this.bricklayer2.destroy(); - this.bricklayer3.destroy(); - - if (tag == this.state.tag) { - this.setState({ tag: null }, () => { - this.bricklayer = new Bricklayer(this.myRef.current); - this.bricklayer2 = new Bricklayer(this.myRef2.current); - this.bricklayer3 = new Bricklayer(this.myRef3.current); - }); - } else { - this.setState({ tag: tag }, () => { - this.bricklayer = new Bricklayer(this.myRef.current); - this.bricklayer2 = new Bricklayer(this.myRef2.current); - this.bricklayer3 = new Bricklayer(this.myRef3.current); - }); - } - } - - render() { - const grandPrizeData = [ - { - name: "Moonshot Prize", - description: "The craziest, most out-of-this-world project", - contents: "Segway - G30Max Electric Kick Scooter", - quantity: 4, - }, - { - name: "Most Technically Complex Hack", - description: "The project built using the most technical skills", - contents: "Mac Minis", - quantity: 4, - }, - { - name: "Most Creative Hack", - description: "The project with the most innovative idea and deployment", - contents: "Sonos Roam", - quantity: 4, - }, - { - name: "Best Hardware Hack", - description: "Best hack that incorporates hardware", - contents: "Monoprice Maker Select 3D Printer v2", - quantity: 4, - }, - { - name: "Most Impactful Hack", - description: "The largest social impact project", - contents: "Apple TV Wi-FI + Ethernet (128 GB)", - quantity: 4, - }, - { - name: "Best Beginner Hack", - description: - "Best hack made by a majority-beginner team. Beginners are hackers for whom TreeHacks is their first hackathon.", - contents: "Audio Technica MX50 Headphones", - quantity: 4, - }, - { - name: "Overall Leaderboard Winner", - description: "Most points tallied on our leaderboard system", - contents: "TreeHacks Engraved AirPods (3rd generation)", - }, - ]; - - const trackPrizeData = [ - { - name: "Healthcare Grand Prize", - description: "Best healthcare project", - contents: "Apple Watch SE", - quantity: 4, - }, - { - name: "Sustainbility Grand Prize", - description: "Best sustainability project", - contents: "Apeman M4 DLP Projector 1080P", - quantity: 4, - }, - { - name: "New Frontiers Grand Prize", - description: "Best project incorporating cutting edge tech", - contents: "Quest 2", - quantity: 4, - }, - { - name: "Web 3.0 and Fintech Grand Prize", - description: "Best Web 3.0 project", - contents: "Airline Gift Card to go to a crypto conference!", - quantity: 4, - }, - { - name: "Education Grand Prize", - description: "Best education project", - contents: "Nintendo Switch", - quantity: 4, - }, - { - name: "Privacy and Safety Grand Prize", - description: "Best Privacy and Safety project", - contents: "Mark VII + AC Tacitcal Wifi Pineapples", - quantity: 4, - }, - ]; const sponsorPrizeData = [ { name: "Best Chat App", description: "The most innovative AI chat application", - contents: "", + contents: "2k per team (cash)", company: "You.com", + logo: You, }, { name: "Best Use of the You.com Open Platform", description: "Awarded to the team who creates the best You.com Open Platform Search app using the Developer Dashboard. Documentation and examples can be found at https://you.com/developers", - contents: "", + contents: "1k per team (Cash)", company: "You.com", + logo: You, }, { name: "Best Web Frontend", @@ -178,20 +69,23 @@ export default class extends React.Component { "For the team that sweats the details. Every pixel of the UI has been polished and intentionally crafted. This award goes to the team who can merge the design and development worlds.", contents: "Vercel swag box ($100 value)", company: "Vercel", + logo: Vercel, }, { name: "Vercel Free Tier", description: "Vercel offers a 100% free tier, perfect for Hackathons, to get your React, Vue, Svelte, Nuxt, Next.js, or similar projects deployed to the Web. ", - contents: "", + contents: "n/a", company: "Vercel", + logo: Vercel, }, { - name: "Skydio 2+", + name: "Skydio 2+ Drone", description: "Skydio 2+ does all the shooting so you can concentrate on the adventure at hand. Launch Skydio into the air and after just 27 minutes, you will have over 100,000 breathtaking 4K stills to choose from, export and share. And when you’re ready to take your drone photography to the next level, Skydio Panorama Skills gives you live previews of massive horizontal, vertical and spherical images in up to 72 megapixels.", - contents: "", + contents: "Skydio 2+ Drone", company: "Skydio", + logo: Skydio, }, { name: "BIG IDEA: Best Technology-Enabled Patient Safety Solution", @@ -199,6 +93,7 @@ export default class extends React.Component { "We’re in search of bold new thinking. This is an invitation to solve the problem of medical error that harms millions of U.S. patients, kills approximately 250,000 patients, and costs billions of dollars every year. We’re calling on TreeHacks teams to envision the best technology-enabled patient safety solution that has the potential to avert patient harm and save lives and will be awarding $2,000 to the top team. Your hack must align with one of the following five leading patient safety challenges facing health care across the continuum of care: Medication errors, procedural/surgical errors, errors during routine patient care (e.g. pressure ulcers, blood clots, falls), infections and diagnostic safety. We encourage teams to consider autonomous tech-enabled patient safety solutions – those that are able to take action with little or no human supervision – as well. Learn more about the problem and get access to resources to help your hack here.", contents: "$2,000 cash to the top team", company: "Pateint Safety Initiative", + logo: Phri, }, { name: "Best Real-World Crypto Hack", @@ -206,6 +101,7 @@ export default class extends React.Component { "Build something using technologies like Bitcoin, Ethereum, ZetaChain that provides real utility for real people.", contents: "1x Ledger Nano X per teammate", company: "ZetaChain", + logo: Zetachain, }, { name: "Best Omnichain Smart Contract Application", @@ -213,6 +109,7 @@ export default class extends React.Component { "Build an useful application that spans multiple chains using ZetaChain’s smart contract and/or messaging!n", contents: "$2500 USDC", company: "ZetaChain", + logo: Zetachain, }, { name: "Most Cyberpunk Hardware Hack", @@ -221,6 +118,7 @@ export default class extends React.Component { contents: "4 Arduino Machine Vision Bundle Kits for the winning team members", company: "Arduino", + logo: Arduino, }, { name: "Best use of Arduino Cloud/API", @@ -228,6 +126,7 @@ export default class extends React.Component { "Integrate the Arduino IoT Cloud in any way to qualify for this prize. Most interesting and creative implementation wins!", contents: "", company: "Arduino", + logo: Arduino, }, { name: "Best Use of Aptos", @@ -235,6 +134,7 @@ export default class extends React.Component { "This prize goes to the team that best uses Aptos to create an innovative social or gaming product / service on the blockchain or enables a better developer experience on Aptos", contents: "$1000", company: "Aptos", + logo: Aptos, }, { name: "Top Uses of NEAR Social (3x)", @@ -242,13 +142,16 @@ export default class extends React.Component { "This goes to the top 3 teams that implement NEAR Social the best. Whether it is indexing data from NEAR Social into your projects or directly building a widget on NEAR Social.", contents: "$1,000 Per team", company: "NEAR Protocol", + logo: Near, }, { name: "Replit", - description: "", + description: + "This prize goes to the teams that the Replit team thinks made the coolest projects!", contents: "First place winner: 3,000 Cycles (~ 3 months of Hacker)\nSecond place winner: 2,000 Cycles (~ 2 months of Hacker)\nThird place winner: 1,000 Cycles (~ 1 month of Hacker)", company: "Replit", + logo: Replit, }, { name: "Best Omnichain Smart Contract Application", @@ -256,6 +159,7 @@ export default class extends React.Component { "Build an useful application that spans multiple chains using ZetaChain’s smart contract and/or messaging!n", contents: "$2500 USDC", company: "ZetaChain", + logo: Zetachain, }, { name: "Wolfram Award", @@ -264,6 +168,7 @@ export default class extends React.Component { contents: "One year of Wolfram|One Personal Edition + one-year subscription to Wolfram|Alpha Pro ($375 per hacker)", company: "Wolfram", + logo: Wolfram, }, { name: "Best use of Supabase", @@ -272,12 +177,14 @@ export default class extends React.Component { contents: "A Supabase swag pack (Black mode T-shirt, Supabase hat, cam cover, and stickers) for each member of the team.", company: "Supabase", + logo: Supabase, }, { name: "Most Innovative Hack", description: "", contents: "Back pack, blankets, sweat shirts, t-shirts, beanies ", company: "Meta", + logo: Meta, }, { name: "Most likely to become a business", @@ -286,6 +193,7 @@ export default class extends React.Component { contents: "Product: Build something people want. Market Size: Address a significant opportunity. Team: Founders would consider committing for long-term.", company: "Neo", + logo: Neo, }, { name: "Best use of Data Hack", @@ -294,6 +202,7 @@ export default class extends React.Component { contents: "Effective use of data is important to the decisions we make at Hudson River Trading, and we’re always looking for innovative new ways to strategize with data. This prize will be awarded to the hack that best integrates the use of data into their project.", company: "HRT", + logo: HRT, }, { name: "Best Payments Hack", @@ -301,6 +210,7 @@ export default class extends React.Component { "This prize will be awarded to the team that has the most interesting payments-based hack.", contents: "$500", company: "Checkbook.io", + logo: Checkbook, }, { name: "Checkbook API Best Implementation", @@ -308,6 +218,7 @@ export default class extends React.Component { "This prize will be awarded to the team that has the most interesting use-case of the Checkbook.io platform.", contents: "AirPod Pros for each member ", company: "Checkbook.io", + logo: Checkbook, }, { name: "Best use of Drone Technology", @@ -315,6 +226,7 @@ export default class extends React.Component { "Parrot is the European leader in the drone industry building Nano drones (under 2 pounds). As drones continue to find applications in a wide range of verticals, such as, industrial inspections, defense, first responders and surveillance, there is a need for development of innovative and specific software mission or customize accessories relevant for different use case. we are therefore interested by what can be the drone technology of tomorrow, how such a technology would be operated and in which mission contexts.", contents: "Anafi AI Drone", company: "Parrot Drones", + logo: Parrot, }, { name: "Best Startup", @@ -322,6 +234,7 @@ export default class extends React.Component { "Given to the top performing teams in Y Combinator’s challenge. These are the teams that we think are most likely to succeed at a startup.", contents: "AirPod Pros for each member ", company: "Checkbook.io", + logo: Checkbook, }, { name: "Checkbook API Best Implementation", @@ -330,12 +243,14 @@ export default class extends React.Component { contents: "Real interview for Y Combinator (no expiration, come interview whenever you want with whoever you want) Dinner on Sunday, with YC team (if in person)", company: "Y Combinator", + logo: YCombinator, }, { name: "Dev tools", description: "Best developer tool", contents: "4 Xbox Series S", company: "Warp", + logo: Warp, }, { name: "Best Hack Using Frontier Tech", @@ -344,6 +259,7 @@ export default class extends React.Component { contents: "$1,000 cash prize and upto $100,000 uncapped SAFE (more below)", company: "Pear VC", + logo: Pear, }, { name: "Best Hack for a Real World Use Case ", @@ -352,6 +268,7 @@ export default class extends React.Component { contents: "$1,000 cash prize and upto $100,000 uncapped SAFE (more below)", company: "Pear VC", + logo: Pear, }, { name: "Best Hack Using AI/ML", @@ -360,6 +277,7 @@ export default class extends React.Component { contents: "$1,000 cash prize and upto $100,000 uncapped SAFE (more below)", company: "Pear VC", + logo: Pear, }, { name: "Retool Hack Ninjas", @@ -368,6 +286,7 @@ export default class extends React.Component { contents: "Ducky One 3 SF Pure White 65% Hotswap RGB Mechanical Keyboard per team member", company: "Retool", + logo: Retool, }, { name: "Best Use of Estuary", @@ -376,6 +295,7 @@ export default class extends React.Component { contents: "1st Prize - 4 iPad 10th Generation\n2nd Prize - 4 Mechanical/gaming keyboards", company: "Warp", + logo: Warp, }, { name: "Best hack to connect with others through food", @@ -384,6 +304,7 @@ export default class extends React.Component { contents: "Good life package - DoorDash gift card ($500) + Spa gift card ($250) = Total: $3000", company: "Otsuka <> Valuenex", + logo: Otsuka, }, { name: "Best VALUENEX Radar Hack", @@ -392,6 +313,7 @@ export default class extends React.Component { contents: "VALUENEX package - Amazon gift card ($250 x 4 people = $1000) and VALUENEX Radar 1 year membership", company: "Otsuka <> Valuenex", + logo: Otsuka, }, { name: "Best Natural Language Hack", @@ -400,6 +322,7 @@ export default class extends React.Component { contents: "1st place: AirPods Max for each team member ($500/ea)\n2nd place: Ember Mug for each team member ($125/ea)\n3rd place: Amazon Echo Dot (5th gen) for each team member ($50/ea)", company: "Mem", + logo: Mem, }, { name: "Best Use of InterSystems IntegratedML", @@ -407,6 +330,7 @@ export default class extends React.Component { "InterSystems is issuing a challenge to build the most interesting and innovative application using **InterSystems IntegratedML** -- in-database automated machine learning, the simplest way to create, deploy and use ML models to power next-generation intelligent applications.\nTo qualify for the prize, your solution needs to use InterSystems IntegratedML. InterSystems will provide free access to cloud-hosted accounts* and *onsite mentors' support. You will be able to submit your project to one of the main tracks as well.*", contents: "1st place: $2000\n2nd place: $1500\n3rd place: $1000", company: "InterSystems", + logo: InterSystems, }, { name: "Best Use of Estuary", @@ -415,6 +339,7 @@ export default class extends React.Component { contents: "1st Prize - 4 iPad 10th Generation\n2nd Prize - 4 Mechanical/gaming keyboards", company: "Warp", + logo: Warp, }, { name: "Best use of Convex", @@ -423,6 +348,169 @@ export default class extends React.Component { contents: "- Massive Lego: 5’ Eiffel Tower, 2 meter RC Airplane kit: E-flite DRACO 2.0m BNF Basic Electric Airplane, Arduino-based quadruped robot: Lynxmotion SQ3U, Various batteries, chargers, and accessories to finish the above projects", company: "Convex", + logo: Convex, + }, + ]; + + this.state = { + tag: null, + searchInput: "", + sData: sponsorPrizeData, + constantSData: sponsorPrizeData, + }; + this.onTagClick = this.onTagClick.bind(this); + this.handleChange = this.handleChange.bind(this); + } + + handleChange = (e) => { + e.preventDefault(); + this.setState({ searchInput: e.target.value }); + console.log(e.target.value); + //const dataC = [{ name: "Belgium", continent: "Europe" }]; + if (e.target.value.length == 0) { + this.setState({ sData: this.state.constantSData }); + } else if (this.state.searchInput.length > 0) { + const filtered = this.state.constantSData.filter( + (country) => + country.name.toLowerCase().includes(this.state.searchInput) || + country.description.toLowerCase().includes(this.state.searchInput) || + country.company.toLowerCase().includes(this.state.searchInput) || + country.contents.toLowerCase().includes(this.state.searchInput) + ); + + this.setState({ + sData: filtered, + }); + } + }; + + /* + + const filtered = constantProjectData.filter( + (project) => + project.projectTitle?.includes(search) || + project.projectDescription?.includes(search) || + project.builders?.includes(search) || + project.submitFirstName?.includes(search) || + project.submitLastName?.includes(search) + );*/ + + componentDidMount() { + this.bricklayer = new Bricklayer(this.myRef.current); + this.bricklayer2 = new Bricklayer(this.myRef2.current); + } + onTagClick(tag) { + this.bricklayer.destroy(); + this.bricklayer2.destroy(); + + if (tag == this.state.tag) { + this.setState({ tag: null }, () => { + this.bricklayer = new Bricklayer(this.myRef.current); + this.bricklayer2 = new Bricklayer(this.myRef2.current); + }); + } else { + this.setState({ tag: tag }, () => { + this.bricklayer = new Bricklayer(this.myRef.current); + this.bricklayer2 = new Bricklayer(this.myRef2.current); + }); + } + } + + render() { + const grandPrizeData = [ + { + name: "Moonshot Prize", + description: "The craziest, most out-of-this-world project", + contents: "Segway - G30Max Electric Kick Scooter", + logo: Logo, + quantity: 4, + }, + { + name: "Most Technically Complex Hack", + description: "The project built using the most technical skills", + contents: "Mac Minis", + logo: Logo, + quantity: 4, + }, + { + name: "Most Creative Hack", + description: "The project with the most innovative idea and deployment", + contents: "Sonos Roam", + logo: Logo, + quantity: 4, + }, + { + name: "Best Hardware Hack", + description: "Best hack that incorporates hardware", + contents: "Monoprice Maker Select 3D Printer v2", + logo: Logo, + quantity: 4, + }, + { + name: "Most Impactful Hack", + description: "The largest social impact project", + contents: "Apple TV Wi-FI + Ethernet (128 GB)", + logo: Logo, + quantity: 4, + }, + { + name: "Best Beginner Hack", + description: + "Best hack made by a majority-beginner team. Beginners are hackers for whom TreeHacks is their first hackathon.", + contents: "Audio Technica MX50 Headphones", + logo: Logo, + quantity: 4, + }, + { + name: "Overall Leaderboard Winner", + description: "Most points tallied on our leaderboard system", + logo: Logo, + contents: "TreeHacks Engraved AirPods (3rd generation)", + }, + ]; + + const trackPrizeData = [ + { + name: "Healthcare Grand Prize", + description: "Best healthcare project", + logo: Logo, + contents: "Apple Watch SE", + quantity: 4, + }, + { + name: "Sustainbility Grand Prize", + description: "Best sustainability project", + logo: Logo, + contents: "Apeman M4 DLP Projector 1080P", + quantity: 4, + }, + { + name: "New Frontiers Grand Prize", + logo: Logo, + description: "Best project incorporating cutting edge tech", + contents: "Quest 2", + quantity: 4, + }, + { + name: "Web 3.0 and Fintech Grand Prize", + description: "Best Web 3.0 project", + logo: Logo, + contents: "Airline Gift Card to go to a crypto conference!", + quantity: 4, + }, + { + name: "Education Grand Prize", + description: "Best education project", + contents: "Nintendo Switch", + logo: Logo, + quantity: 4, + }, + { + name: "Privacy and Safety Grand Prize", + description: "Best Privacy and Safety project", + contents: "Mark VII + AC Tacitcal Wifi Pineapples", + logo: Logo, + quantity: 4, }, ]; @@ -439,7 +527,7 @@ export default class extends React.Component { style={{ backgroundColor: "#151729", paddingTop: "0px" }} className="prizes" > -
+ {/*

Check out all the cool prizes you can compete for! -
+

*/}

{col.name}

{col.description}

-

+

{col.contents} for each team member

+

+ Sponsored by +

+
); @@ -508,6 +609,19 @@ export default class extends React.Component {

{col.contents} for each team member

+

+ Sponsored by +

+
); @@ -525,29 +639,72 @@ export default class extends React.Component { Sponsor Prizes -
- {sponsorPrizeData.map((col) => { - return ( -
-
-

{col.name}

-

{col.description}

-

{col.contents}

-

- Sponsored by {col.company} -

-
+ + + + + {this.state.sData.length > 0 && + this.state.sData.map((col) => { + return ( +
+
+

{col.name}

+

{col.description}

+
+

Winners get:

+

{col.contents}

+

+ Sponsored by {col.company} +

+ +
+
+ ); + })} + {this.state.sData.length == 0 && ( +
+

+ No results found +

- ); - })} -
+ )} + + +
); diff --git a/src/js/resources.jsx b/src/js/resources.jsx index fdf5698..f3bbec4 100644 --- a/src/js/resources.jsx +++ b/src/js/resources.jsx @@ -13,7 +13,7 @@ function Resources() { return (
diff --git a/src/logos/OpenAI.webp b/src/logos/OpenAI.webp new file mode 100644 index 0000000..cc36ec8 Binary files /dev/null and b/src/logos/OpenAI.webp differ diff --git a/src/logos/algolia.webp b/src/logos/algolia.webp new file mode 100644 index 0000000..6d6b41b Binary files /dev/null and b/src/logos/algolia.webp differ diff --git a/src/logos/aptos.webp b/src/logos/aptos.webp new file mode 100644 index 0000000..e66ce94 Binary files /dev/null and b/src/logos/aptos.webp differ diff --git a/src/logos/arduino.webp b/src/logos/arduino.webp new file mode 100644 index 0000000..7253f08 Binary files /dev/null and b/src/logos/arduino.webp differ diff --git a/src/logos/aspecta.webp b/src/logos/aspecta.webp new file mode 100644 index 0000000..7f9d2db Binary files /dev/null and b/src/logos/aspecta.webp differ diff --git a/src/logos/bnb.webp b/src/logos/bnb.webp new file mode 100644 index 0000000..6d3d45f Binary files /dev/null and b/src/logos/bnb.webp differ diff --git a/src/logos/cadence.webp b/src/logos/cadence.webp new file mode 100644 index 0000000..40e2235 Binary files /dev/null and b/src/logos/cadence.webp differ diff --git a/src/logos/checkbook.webp b/src/logos/checkbook.webp new file mode 100644 index 0000000..ff531c4 Binary files /dev/null and b/src/logos/checkbook.webp differ diff --git a/src/logos/cisco.webp b/src/logos/cisco.webp new file mode 100644 index 0000000..7dcaf10 Binary files /dev/null and b/src/logos/cisco.webp differ diff --git a/src/logos/citadel.webp b/src/logos/citadel.webp new file mode 100644 index 0000000..962abe6 Binary files /dev/null and b/src/logos/citadel.webp differ diff --git a/src/logos/convex.webp b/src/logos/convex.webp new file mode 100644 index 0000000..e8bc01c Binary files /dev/null and b/src/logos/convex.webp differ diff --git a/src/logos/cypherd.webp b/src/logos/cypherd.webp new file mode 100644 index 0000000..d7f869d Binary files /dev/null and b/src/logos/cypherd.webp differ diff --git a/src/logos/dolby.webp b/src/logos/dolby.webp new file mode 100644 index 0000000..b381119 Binary files /dev/null and b/src/logos/dolby.webp differ diff --git a/src/logos/estuary.webp b/src/logos/estuary.webp new file mode 100644 index 0000000..b72d415 Binary files /dev/null and b/src/logos/estuary.webp differ diff --git a/src/logos/generaltask.webp b/src/logos/generaltask.webp new file mode 100644 index 0000000..7787570 Binary files /dev/null and b/src/logos/generaltask.webp differ diff --git a/src/logos/hrt.webp b/src/logos/hrt.webp new file mode 100644 index 0000000..917b38e Binary files /dev/null and b/src/logos/hrt.webp differ diff --git a/src/logos/intersystems.webp b/src/logos/intersystems.webp new file mode 100644 index 0000000..3b1b02b Binary files /dev/null and b/src/logos/intersystems.webp differ diff --git a/src/logos/makerbot.webp b/src/logos/makerbot.webp new file mode 100644 index 0000000..a6e5ded Binary files /dev/null and b/src/logos/makerbot.webp differ diff --git a/src/logos/mem.webp b/src/logos/mem.webp new file mode 100644 index 0000000..d8ba223 Binary files /dev/null and b/src/logos/mem.webp differ diff --git a/src/logos/meta.webp b/src/logos/meta.webp new file mode 100644 index 0000000..c9e68b0 Binary files /dev/null and b/src/logos/meta.webp differ diff --git a/src/logos/near.webp b/src/logos/near.webp new file mode 100644 index 0000000..f4f5fb5 Binary files /dev/null and b/src/logos/near.webp differ diff --git a/src/logos/neo.webp b/src/logos/neo.webp new file mode 100644 index 0000000..efb6fe9 Binary files /dev/null and b/src/logos/neo.webp differ diff --git a/src/logos/otsuka.webp b/src/logos/otsuka.webp new file mode 100644 index 0000000..66c8fa2 Binary files /dev/null and b/src/logos/otsuka.webp differ diff --git a/src/logos/parrot.webp b/src/logos/parrot.webp new file mode 100644 index 0000000..a6e6d96 Binary files /dev/null and b/src/logos/parrot.webp differ diff --git a/src/logos/pear.webp b/src/logos/pear.webp new file mode 100644 index 0000000..bb66f78 Binary files /dev/null and b/src/logos/pear.webp differ diff --git a/src/logos/phri.webp b/src/logos/phri.webp new file mode 100644 index 0000000..ca6fa67 Binary files /dev/null and b/src/logos/phri.webp differ diff --git a/src/logos/replit.webp b/src/logos/replit.webp new file mode 100644 index 0000000..4f43c12 Binary files /dev/null and b/src/logos/replit.webp differ diff --git a/src/logos/retool.webp b/src/logos/retool.webp new file mode 100644 index 0000000..56e918a Binary files /dev/null and b/src/logos/retool.webp differ diff --git a/src/logos/skydio.webp b/src/logos/skydio.webp new file mode 100644 index 0000000..78b8e7d Binary files /dev/null and b/src/logos/skydio.webp differ diff --git a/src/logos/square.webp b/src/logos/square.webp new file mode 100644 index 0000000..fc71fc8 Binary files /dev/null and b/src/logos/square.webp differ diff --git a/src/logos/supabase.webp b/src/logos/supabase.webp new file mode 100644 index 0000000..ef95567 Binary files /dev/null and b/src/logos/supabase.webp differ diff --git a/src/logos/treehacks_logo.webp b/src/logos/treehacks_logo.webp new file mode 100644 index 0000000..8f651b9 Binary files /dev/null and b/src/logos/treehacks_logo.webp differ diff --git a/src/logos/twilio.webp b/src/logos/twilio.webp new file mode 100644 index 0000000..2018c81 Binary files /dev/null and b/src/logos/twilio.webp differ diff --git a/src/logos/vercel.webp b/src/logos/vercel.webp new file mode 100644 index 0000000..fb5d63e Binary files /dev/null and b/src/logos/vercel.webp differ diff --git a/src/logos/voiceflow.webp b/src/logos/voiceflow.webp new file mode 100644 index 0000000..babeb72 Binary files /dev/null and b/src/logos/voiceflow.webp differ diff --git a/src/logos/warp.webp b/src/logos/warp.webp new file mode 100644 index 0000000..7a54f46 Binary files /dev/null and b/src/logos/warp.webp differ diff --git a/src/logos/wolfram.webp b/src/logos/wolfram.webp new file mode 100644 index 0000000..6383b1a Binary files /dev/null and b/src/logos/wolfram.webp differ diff --git a/src/logos/ycombinator.webp b/src/logos/ycombinator.webp new file mode 100644 index 0000000..52a22ba Binary files /dev/null and b/src/logos/ycombinator.webp differ diff --git a/src/logos/you.webp b/src/logos/you.webp new file mode 100644 index 0000000..80e0093 Binary files /dev/null and b/src/logos/you.webp differ diff --git a/src/logos/zetachain.webp b/src/logos/zetachain.webp new file mode 100644 index 0000000..84abfe7 Binary files /dev/null and b/src/logos/zetachain.webp differ diff --git a/src/sass/apis.scss b/src/sass/apis.scss index 65f5635..13338c6 100644 --- a/src/sass/apis.scss +++ b/src/sass/apis.scss @@ -27,6 +27,10 @@ margin-bottom: 7.5%; } +#searchInput:focus { + outline: none; +} + .prizes { padding-right: 30px; padding-left: 30px; @@ -39,6 +43,47 @@ } } +.sponsor { + background-image: linear-gradient(90deg, black, #0089b6); + -webkit-animation: Animation 5s ease infinite; + -moz-animation: Animation 5s ease infinite; + animation: Animation 5s ease infinite; +} + +@-webkit-keyframes Animation { + 0% { + background-position: 10% 0%; + } + 50% { + background-position: 91% 100%; + } + 100% { + background-position: 10% 0%; + } +} +@-moz-keyframes Animation { + 0% { + background-position: 10% 0%; + } + 50% { + background-position: 91% 100%; + } + 100% { + background-position: 10% 0%; + } +} +@keyframes Animation { + 0% { + background-position: 10% 0%; + } + 50% { + background-position: 91% 100%; + } + 100% { + background-position: 10% 0%; + } +} + .trackPrizes { padding-right: 30px; padding-left: 30px; diff --git a/src/sass/resources.scss b/src/sass/resources.scss index 60622e6..e561eb0 100644 --- a/src/sass/resources.scss +++ b/src/sass/resources.scss @@ -28,6 +28,11 @@ border-right: none; } +.resource-7 { + scale: 0.7; + border-right: none; +} + .resource-icon { height: 24px; padding-right: 10px;