From fa67c88c6cd99f9ef397320ec020db5d8632c46a Mon Sep 17 00:00:00 2001 From: Juan Di Toro Date: Tue, 14 Nov 2023 16:52:42 +0100 Subject: [PATCH] feat: add results page --- package-lock.json | 118 ++++++++++++++++++++----- package.json | 1 - public/lume-logo-sm.png | Bin 0 -> 11545 bytes public/next.svg | 1 - public/vercel.svg | 1 - src/app/layout.tsx | 71 +++++++++++++-- src/app/page.tsx | 63 +++++++------ src/app/search/page.tsx | 73 +++++++++++++++ src/components/SearchBar.tsx | 75 ++++++++-------- src/components/SimplifiedSearchBar.tsx | 69 +++++++++++++++ src/types.d.ts | 6 ++ src/utils.ts | 12 +++ tailwind.config.ts | 6 +- 13 files changed, 394 insertions(+), 102 deletions(-) create mode 100644 public/lume-logo-sm.png delete mode 100644 public/next.svg delete mode 100644 public/vercel.svg create mode 100644 src/app/search/page.tsx create mode 100644 src/components/SimplifiedSearchBar.tsx create mode 100644 src/types.d.ts create mode 100644 src/utils.ts diff --git a/package-lock.json b/package-lock.json index 3b5affc..b10c65b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,6 @@ "version": "0.1.0", "dependencies": { "@heroicons/react": "^2.0.18", - "@tailwindcss/container-queries": "^0.1.1", "date-fns": "^2.30.0", "next": "14.0.2", "react": "^18", @@ -41,6 +40,7 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "dev": true, "engines": { "node": ">=10" }, @@ -160,6 +160,7 @@ "version": "0.3.3", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dev": true, "dependencies": { "@jridgewell/set-array": "^1.0.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -173,6 +174,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "dev": true, "engines": { "node": ">=6.0.0" } @@ -181,6 +183,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true, "engines": { "node": ">=6.0.0" } @@ -188,12 +191,14 @@ "node_modules/@jridgewell/sourcemap-codec": { "version": "1.4.15", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.20", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", + "dev": true, "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -352,6 +357,7 @@ "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -364,6 +370,7 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, "engines": { "node": ">= 8" } @@ -372,6 +379,7 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -394,14 +402,6 @@ "tslib": "^2.4.0" } }, - "node_modules/@tailwindcss/container-queries": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@tailwindcss/container-queries/-/container-queries-0.1.1.tgz", - "integrity": "sha512-p18dswChx6WnTSaJCSGx6lTmrGzNNvm2FtXmiO6AuA1V4U5REyoqwmT6kgAsIMdjo07QdAfYXHJ4hnMtfHzWgA==", - "peerDependencies": { - "tailwindcss": ">=3.2.0" - } - }, "node_modules/@types/json5": { "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", @@ -621,12 +621,14 @@ "node_modules/any-promise": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==" + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true }, "node_modules/anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -638,7 +640,8 @@ "node_modules/arg": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", - "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "dev": true }, "node_modules/argparse": { "version": "2.0.1", @@ -870,12 +873,14 @@ "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true }, "node_modules/binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, "engines": { "node": ">=8" } @@ -884,6 +889,7 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -893,6 +899,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, "dependencies": { "fill-range": "^7.0.1" }, @@ -970,6 +977,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "dev": true, "engines": { "node": ">= 6" } @@ -1013,6 +1021,7 @@ "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, "funding": [ { "type": "individual", @@ -1039,6 +1048,7 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, "dependencies": { "is-glob": "^4.0.1" }, @@ -1073,6 +1083,7 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, "engines": { "node": ">= 6" } @@ -1080,7 +1091,8 @@ "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true }, "node_modules/cross-spawn": { "version": "7.0.3", @@ -1100,6 +1112,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, "bin": { "cssesc": "bin/cssesc" }, @@ -1200,7 +1213,8 @@ "node_modules/didyoumean": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", - "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==" + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "dev": true }, "node_modules/dir-glob": { "version": "3.0.1", @@ -1217,7 +1231,8 @@ "node_modules/dlv": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", - "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dev": true }, "node_modules/doctrine": { "version": "3.0.0", @@ -1812,6 +1827,7 @@ "version": "3.3.2", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -1827,6 +1843,7 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, "dependencies": { "is-glob": "^4.0.1" }, @@ -1850,6 +1867,7 @@ "version": "1.15.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dev": true, "dependencies": { "reusify": "^1.0.4" } @@ -1870,6 +1888,7 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, "dependencies": { "to-regex-range": "^5.0.1" }, @@ -1938,12 +1957,14 @@ "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true }, "node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, "hasInstallScript": true, "optional": true, "os": [ @@ -1957,6 +1978,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -2055,6 +2077,7 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, "dependencies": { "is-glob": "^4.0.3" }, @@ -2213,6 +2236,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, "dependencies": { "function-bind": "^1.1.2" }, @@ -2258,6 +2282,7 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -2266,7 +2291,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==", + "dev": true }, "node_modules/internal-slot": { "version": "1.0.6", @@ -2327,6 +2353,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, "dependencies": { "binary-extensions": "^2.0.0" }, @@ -2366,6 +2393,7 @@ "version": "2.13.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dev": true, "dependencies": { "hasown": "^2.0.0" }, @@ -2392,6 +2420,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -2427,6 +2456,7 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, "dependencies": { "is-extglob": "^2.1.1" }, @@ -2459,6 +2489,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, "engines": { "node": ">=0.12.0" } @@ -2632,6 +2663,7 @@ "version": "1.21.0", "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz", "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==", + "dev": true, "bin": { "jiti": "bin/jiti.js" } @@ -2742,6 +2774,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "dev": true, "engines": { "node": ">=10" } @@ -2749,7 +2782,8 @@ "node_modules/lines-and-columns": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true }, "node_modules/locate-path": { "version": "6.0.0", @@ -2799,6 +2833,7 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, "engines": { "node": ">= 8" } @@ -2807,6 +2842,7 @@ "version": "4.0.5", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, "dependencies": { "braces": "^3.0.2", "picomatch": "^2.3.1" @@ -2819,6 +2855,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -2845,6 +2882,7 @@ "version": "2.7.0", "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, "dependencies": { "any-promise": "^1.0.0", "object-assign": "^4.0.1", @@ -2929,6 +2967,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -2946,6 +2985,7 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -2954,6 +2994,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "dev": true, "engines": { "node": ">= 6" } @@ -3071,6 +3112,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, "dependencies": { "wrappy": "1" } @@ -3147,6 +3189,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -3163,7 +3206,8 @@ "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==", + "dev": true }, "node_modules/path-type": { "version": "4.0.0", @@ -3183,6 +3227,7 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, "engines": { "node": ">=8.6" }, @@ -3194,6 +3239,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -3202,6 +3248,7 @@ "version": "4.0.6", "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "dev": true, "engines": { "node": ">= 6" } @@ -3237,6 +3284,7 @@ "version": "15.1.0", "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "dev": true, "dependencies": { "postcss-value-parser": "^4.0.0", "read-cache": "^1.0.0", @@ -3253,6 +3301,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", + "dev": true, "dependencies": { "camelcase-css": "^2.0.1" }, @@ -3271,6 +3320,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.1.tgz", "integrity": "sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==", + "dev": true, "dependencies": { "lilconfig": "^2.0.5", "yaml": "^2.1.1" @@ -3299,6 +3349,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz", "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==", + "dev": true, "dependencies": { "postcss-selector-parser": "^6.0.11" }, @@ -3317,6 +3368,7 @@ "version": "6.0.13", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", + "dev": true, "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -3328,7 +3380,8 @@ "node_modules/postcss-value-parser": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true }, "node_modules/prelude-ls": { "version": "1.2.1", @@ -3363,6 +3416,7 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, "funding": [ { "type": "github", @@ -3411,6 +3465,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dev": true, "dependencies": { "pify": "^2.3.0" } @@ -3419,6 +3474,7 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, "dependencies": { "picomatch": "^2.2.1" }, @@ -3472,6 +3528,7 @@ "version": "1.22.8", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", @@ -3506,6 +3563,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" @@ -3530,6 +3588,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, "funding": [ { "type": "github", @@ -3816,6 +3875,7 @@ "version": "3.34.0", "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.34.0.tgz", "integrity": "sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==", + "dev": true, "dependencies": { "@jridgewell/gen-mapping": "^0.3.2", "commander": "^4.0.0", @@ -3837,6 +3897,7 @@ "version": "7.1.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -3868,6 +3929,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==", + "dev": true, "engines": { "node": ">= 0.4" }, @@ -3879,6 +3941,7 @@ "version": "3.3.5", "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.3.5.tgz", "integrity": "sha512-5SEZU4J7pxZgSkv7FP1zY8i2TIAOooNZ1e/OGtxIEv6GltpoiXUqWvLy89+a10qYTB1N5Ifkuw9lqQkN9sscvA==", + "dev": true, "dependencies": { "@alloc/quick-lru": "^5.2.0", "arg": "^5.0.2", @@ -3939,6 +4002,7 @@ "version": "3.3.1", "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, "dependencies": { "any-promise": "^1.0.0" } @@ -3947,6 +4011,7 @@ "version": "1.6.0", "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, "dependencies": { "thenify": ">= 3.1.0 < 4" }, @@ -3958,6 +4023,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, "dependencies": { "is-number": "^7.0.0" }, @@ -3980,7 +4046,8 @@ "node_modules/ts-interface-checker": { "version": "0.1.13", "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", - "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==" + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "dev": true }, "node_modules/tsconfig-paths": { "version": "3.14.2", @@ -4164,7 +4231,8 @@ "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true }, "node_modules/watchpack": { "version": "2.4.0", @@ -4272,7 +4340,8 @@ "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true }, "node_modules/yallist": { "version": "4.0.0", @@ -4284,6 +4353,7 @@ "version": "2.3.4", "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz", "integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==", + "dev": true, "engines": { "node": ">= 14" } diff --git a/package.json b/package.json index e4987d2..fece97e 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,6 @@ }, "dependencies": { "@heroicons/react": "^2.0.18", - "@tailwindcss/container-queries": "^0.1.1", "date-fns": "^2.30.0", "next": "14.0.2", "react": "^18", diff --git a/public/lume-logo-sm.png b/public/lume-logo-sm.png new file mode 100644 index 0000000000000000000000000000000000000000..24b78a41fe8188e2a2d28b69d244db90b2f184f5 GIT binary patch literal 11545 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 literal 0 HcmV?d00001 diff --git a/public/next.svg b/public/next.svg deleted file mode 100644 index 5174b28..0000000 --- a/public/next.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/vercel.svg b/public/vercel.svg deleted file mode 100644 index d2f8422..0000000 --- a/public/vercel.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 06885c6..9ca6e12 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -1,22 +1,77 @@ -import type { Metadata } from 'next' -import { Inter } from 'next/font/google' -import './globals.css' +import type { Metadata } from "next" +import Image from "next/image" +import { Inter, Jaldi } from "next/font/google" +import "./globals.css" -const inter = Inter({ subsets: ['latin'] }) +const inter = Inter({ subsets: ["latin"], variable: "--font-inter" }) +const jaldi = Jaldi({ + subsets: ["latin"], + weight: ["400"], + variable: "--font-jaldi" +}) export const metadata: Metadata = { - title: 'Create Next App', - description: 'Generated by create next app', + title: "Create Next App", + description: "Generated by create next app" } export default function RootLayout({ - children, + children }: { children: React.ReactNode }) { return ( - {children} + +
+
+ {children} +
+ ) } + +export const Header = () => { + return ( +
+
+ +
+
+ + + a Lume project + +
+
+ ) +} + +const Web3NewsLogo = ({ className }: { className?: string }) => { + return ( + + + + + ) +} diff --git a/src/app/page.tsx b/src/app/page.tsx index bfb92c7..dc6ddc9 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -7,45 +7,54 @@ const newsItems = [ export default function Home() { return ( -
+ <> - +
- -
+ ) } const Feed = () => { - return
-
- - -
-
-
- 1h ago -

- Bitcoin (BTC) Price Prediction: When Will Bitcoin Reach $100,000? -

-
-
-
+ return ( +
+
+ + +
+
+
+ + 1h ago + +

+ Bitcoin (BTC) Price Prediction: When Will Bitcoin Reach $100,000? +

+
+
+
+ ) } -const PaperIcon = ({className}: {className: string}) => { +const PaperIcon = ({ className }: { className: string }) => { return ( { + const query = searchParams.q ?? "" + const results = await getResults({ query: searchParams.q }) + + return ( +
+ + + + + {results.length > 0 && ( + <> + {results.map((item) => ( +
+ + {formatDate(item.timestamp)} + +

{item.title}

+
+ ))} + + + + + )} +
+ ) +} + +async function getResults({ + query +}: { + query?: string +}): Promise { + if (!query) return [] + + return [ + { + id: 1, + timestamp: new Date(), + title: "Mock Title 1", + description: "Mock Description 1" + }, + { + id: 2, + timestamp: new Date(), + title: "Mock Title 2", + description: "Mock Description 2" + } + ] +} + +export default Page diff --git a/src/components/SearchBar.tsx b/src/components/SearchBar.tsx index 47a91aa..6f657f6 100644 --- a/src/components/SearchBar.tsx +++ b/src/components/SearchBar.tsx @@ -1,44 +1,44 @@ "use client" -import React, { FormEvent, useRef, useState } from "react" +import React, { FormEvent, useCallback, useEffect, useRef, useState } from "react" import { - MagnifyingGlassIcon as SearchIcon, - FunnelIcon as FilterIcon, ChevronDownIcon, ChevronRightIcon } from "@heroicons/react/24/outline" // Assuming usage of Heroicons for icons -import { formatDistanceToNow } from "date-fns" // date-fns library used for date formatting import { flushSync } from "react-dom" +import Link from "next/link" +import { usePathname, useSearchParams, useRouter } from "next/navigation" +import { formatDate } from "@/utils" -// Utility function to format dates -const formatDate = (date: string | Date) => { - const distance = formatDistanceToNow(new Date(date), { addSuffix: true }) - return distance - .replace(/less than a minute?/, "<1m") - .replace(/ seconds?/, "s") - .replace(/ minutes?/, "m") - .replace(/ hours?/, "h") - .replace(/ days?/, "d") - .replace(/ weeks?/, "w") +type Props = { + variant: "default" | "simplified" } -const SearchBar = () => { +const SearchBar = ({variant}: Props) => { + const searchParams = useSearchParams(); + const router = useRouter(); + const pathname = usePathname(); + const [query, setQuery] = useState(searchParams.get("q") ?? ""); const inputRef = useRef() - const [query, setQuery] = useState("") const [isLoading, setIsLoading] = useState(false) const [activeInput, setActiveInput] = useState(true) const [results, setResults] = useState< - { - id: number - timestamp: Date - title: string - description: string - }[] + SearchResult[] >([]) - const handleSearch = async (event: FormEvent) => { - event.preventDefault() + const handleSearch = useCallback(async (event?: FormEvent) => { + event?.preventDefault() setIsLoading(true) + const newSearchParams = new URLSearchParams(searchParams) + + if(query) { + newSearchParams.set('q', query) + } else { + newSearchParams.delete('q') + } + + router.push(`${pathname}?${newSearchParams}`) + // Perform search and update results state // Assume fetchResults is a function that fetches search results // const searchResults = await fetchResults(query); @@ -60,7 +60,13 @@ const SearchBar = () => { setResults(searchResults) setIsLoading(false) setActiveInput(false) - } + }, [query, setResults, setIsLoading, setActiveInput, searchParams, router, pathname]) + + useEffect(() => { + if(searchParams.get("q") && searchParams.get("q") !== "") { + handleSearch(); + } + }, [searchParams, handleSearch]) return (
{

{item.title}

))} -
- -
+ )} @@ -184,13 +190,4 @@ const LoadingComponent = () => { return
Loading...
} -const FilterComponent = () => { - // Replace with actual Shadcn Filter component - return ( - - ) -} - export default SearchBar diff --git a/src/components/SimplifiedSearchBar.tsx b/src/components/SimplifiedSearchBar.tsx new file mode 100644 index 0000000..cd5850a --- /dev/null +++ b/src/components/SimplifiedSearchBar.tsx @@ -0,0 +1,69 @@ +"use client" + +import { usePathname, useRouter, useSearchParams } from "next/navigation" +import { ChevronDownIcon } from "@heroicons/react/24/outline" +import React, { FormEvent, useState } from "react" + +type Props = { + value: string + placeholder?: string + className?: string +} + +const SimplifiedSearchBar = ({ + value: initialValue, + placeholder, + className +}: Props) => { + const searchParams = useSearchParams(); + const pathname = usePathname(); + const router = useRouter(); + const [value, setValue] = useState(initialValue) + const handleSearch = (event: FormEvent) => { + event.preventDefault(); + const newSearchParams = new URLSearchParams(searchParams) + + if(value) { + newSearchParams.set('q', value) + } else { + newSearchParams.delete('q') + } + + router.push(`${pathname}?${newSearchParams}`) + } + return ( +
+
+ results: +
+ setValue(e.target.value)} + size={value.length} + /> +
+
+
+ {/* Dropdown component should be here */} +
+ All Sites + +
+ {/* Dropdown component should be here */} +
+ All Times + +
+
+
+ ) +} + +export default SimplifiedSearchBar diff --git a/src/types.d.ts b/src/types.d.ts new file mode 100644 index 0000000..b0fd0ff --- /dev/null +++ b/src/types.d.ts @@ -0,0 +1,6 @@ +type SearchResult = { + id: number + timestamp: Date + title: string + description: string + } \ No newline at end of file diff --git a/src/utils.ts b/src/utils.ts new file mode 100644 index 0000000..18d455e --- /dev/null +++ b/src/utils.ts @@ -0,0 +1,12 @@ +import { formatDistanceToNow } from "date-fns" + +// Utility function to format dates +export const formatDate = (date: string | Date) => { + const distance = formatDistanceToNow(new Date(date), { addSuffix: true }) + return distance + .replace(/less than a minute?/, "<1m") + .replace(/ minutes?/, "m") + .replace(/ hours?/, "h") + .replace(/ days?/, "d") + .replace(/ weeks?/, "w") + } \ No newline at end of file diff --git a/tailwind.config.ts b/tailwind.config.ts index 4a15c3c..36cc00a 100644 --- a/tailwind.config.ts +++ b/tailwind.config.ts @@ -16,6 +16,10 @@ const config: Config = { }, }, extend: { + fontFamily: { + main: "var(--font-inter)", + secondary: "var(--font-jaldi)", + }, colors: { border: "hsl(var(--border))", input: "hsl(var(--input))", @@ -72,7 +76,7 @@ const config: Config = { }, }, }, - plugins: [require('@tailwindcss/container-queries'), require("tailwindcss-animate")], + plugins: [require("tailwindcss-animate")], } export default config