From a16161cdb48c064882b9dc91ec3d091d286f5c63 Mon Sep 17 00:00:00 2001 From: Corentin Thomasset Date: Sat, 23 Jul 2022 18:19:06 +0200 Subject: [PATCH 001/449] fix(deps): run dependencie audit auto fix --- package-lock.json | 104 +++++++++++++++++++++++++++++++++------------- 1 file changed, 75 insertions(+), 29 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7310f290..91280a47 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7,6 +7,7 @@ "": { "name": "it-tools", "version": "2.5.3", + "license": "GNU GPLv3", "dependencies": { "@it-tools/bip39": "^0.0.4", "@vicons/material": "^0.12.0", @@ -1862,6 +1863,20 @@ "url": "https://github.com/sponsors/CorentinTh" } }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/@jridgewell/resolve-uri": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz", @@ -1871,6 +1886,25 @@ "node": ">=6.0.0" } }, + "node_modules/@jridgewell/set-array": { + "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" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", + "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, "node_modules/@jridgewell/sourcemap-codec": { "version": "1.4.11", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz", @@ -1878,9 +1912,9 @@ "dev": true }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz", - "integrity": "sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ==", + "version": "0.3.14", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz", + "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==", "dev": true, "dependencies": { "@jridgewell/resolve-uri": "^3.0.3", @@ -9973,14 +10007,14 @@ } }, "node_modules/terser": { - "version": "5.12.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.12.1.tgz", - "integrity": "sha512-NXbs+7nisos5E+yXwAD+y7zrcTkMqb0dEJxIGtSKPdCBzopf7ni4odPul2aechpV7EXNvOudYOX2bb5tln1jbQ==", + "version": "5.14.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", + "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", "dev": true, "dependencies": { + "@jridgewell/source-map": "^0.3.2", "acorn": "^8.5.0", "commander": "^2.20.0", - "source-map": "~0.7.2", "source-map-support": "~0.5.20" }, "bin": { @@ -9996,15 +10030,6 @@ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true }, - "node_modules/terser/node_modules/source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, "node_modules/test-exclude": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", @@ -12675,12 +12700,39 @@ "nanoid": "^3.3.2" } }, + "@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, "@jridgewell/resolve-uri": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz", "integrity": "sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==", "dev": true }, + "@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true + }, + "@jridgewell/source-map": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", + "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, "@jridgewell/sourcemap-codec": { "version": "1.4.11", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz", @@ -12688,9 +12740,9 @@ "dev": true }, "@jridgewell/trace-mapping": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz", - "integrity": "sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ==", + "version": "0.3.14", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz", + "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==", "dev": true, "requires": { "@jridgewell/resolve-uri": "^3.0.3", @@ -18758,14 +18810,14 @@ } }, "terser": { - "version": "5.12.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.12.1.tgz", - "integrity": "sha512-NXbs+7nisos5E+yXwAD+y7zrcTkMqb0dEJxIGtSKPdCBzopf7ni4odPul2aechpV7EXNvOudYOX2bb5tln1jbQ==", + "version": "5.14.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", + "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", "dev": true, "requires": { + "@jridgewell/source-map": "^0.3.2", "acorn": "^8.5.0", "commander": "^2.20.0", - "source-map": "~0.7.2", "source-map-support": "~0.5.20" }, "dependencies": { @@ -18774,12 +18826,6 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true - }, - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true } } }, From c3a302bc389a0e13aef4b14d5a9d3ec3a0d32729 Mon Sep 17 00:00:00 2001 From: Corentin Thomasset Date: Sat, 23 Jul 2022 18:19:40 +0200 Subject: [PATCH 002/449] fix(lint): cleanned index.html --- index.html | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/index.html b/index.html index b25baca5..b020adc5 100644 --- a/index.html +++ b/index.html @@ -6,11 +6,17 @@ IT Tools - Handy online tools for developers - - + + - - + + @@ -21,14 +27,20 @@ - + - + From ab53048d5f6fdca7d00edbb79dee1a5409e6b11e Mon Sep 17 00:00:00 2001 From: Corentin Thomasset Date: Sat, 23 Jul 2022 18:49:10 +0200 Subject: [PATCH 003/449] feat(search): focus the search bar using Ctrl+K --- src/components/SearchBar.vue | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/src/components/SearchBar.vue b/src/components/SearchBar.vue index da5bede4..7305239e 100644 --- a/src/components/SearchBar.vue +++ b/src/components/SearchBar.vue @@ -1,8 +1,9 @@ ❤ Support IT Tools development ! @@ -170,6 +173,19 @@ const menuOptions: MenuGroupOption[] = toolsByCategory.map((category) => ({ // background-size: @size @size; // } +.support-button { + background: rgb(37, 99, 108); + background: linear-gradient(48deg, rgba(37, 99, 108, 1) 0%, rgba(59, 149, 111, 1) 60%, rgba(20, 160, 88, 1) 100%); + color: #fff; + transition: all ease 0.2s; + + &:hover { + color: #fff; + padding-left: 30px; + padding-right: 30px; + } +} + .footer { text-align: center; color: #838587; From 274ff02b5492c7a2ac01c22064b07892dad42f18 Mon Sep 17 00:00:00 2001 From: Corentin Thomasset Date: Sat, 17 Dec 2022 11:42:47 +0100 Subject: [PATCH 086/449] chore(git): added .env to gitignore --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index 38adffa6..cd1e2011 100644 --- a/.gitignore +++ b/.gitignore @@ -26,3 +26,5 @@ coverage *.njsproj *.sln *.sw? + +.env \ No newline at end of file From af075dccccec959a0863e6d11516206860bed91f Mon Sep 17 00:00:00 2001 From: Corentin Thomasset Date: Sat, 17 Dec 2022 15:33:52 +0100 Subject: [PATCH 087/449] feat(tool): improved favorite tool management --- src/layouts/base.layout.vue | 33 +++++++++----- src/layouts/tool.layout.vue | 31 ++++++------- src/pages/Home.page.vue | 90 ++++++++++++++++++++----------------- 3 files changed, 83 insertions(+), 71 deletions(-) diff --git a/src/layouts/base.layout.vue b/src/layouts/base.layout.vue index aa7ef8f0..e2132185 100644 --- a/src/layouts/base.layout.vue +++ b/src/layouts/base.layout.vue @@ -1,6 +1,6 @@ ❤ Support IT Tools development ! diff --git a/src/layouts/tool.layout.vue b/src/layouts/tool.layout.vue index bb3665ea..6cccbb05 100644 --- a/src/layouts/tool.layout.vue +++ b/src/layouts/tool.layout.vue @@ -3,22 +3,22 @@ import { useRoute } from 'vue-router'; import { useHead } from '@vueuse/head'; import type { HeadObject } from '@vueuse/head'; import { computed } from 'vue'; -import { useThemeVars } from 'naive-ui'; +import FavoriteButton from '@/components/FavoriteButton.vue'; +import type { Tool } from '@/tools/tools.types'; import BaseLayout from './base.layout.vue'; const route = useRoute(); -const theme = useThemeVars(); const head = computed(() => ({ title: `${route.meta.name} - IT Tools`, meta: [ { name: 'description', - content: route.meta.description, + content: route.meta?.description as string, }, { name: 'keywords', - content: route.meta.keywords, + content: ((route.meta.keywords ?? []) as string[]).join(','), }, ], })); @@ -29,22 +29,18 @@ useHead(head);
- - {{ route.meta.name }} + + + {{ route.meta.name }} + - - New tool - - - +
+ +
+
+
{{ route.meta.description }}
@@ -92,6 +88,7 @@ useHead(head); width: 200px; height: 2px; background: rgb(161, 161, 161); + opacity: 0.2; margin: 10px 0; } diff --git a/src/pages/Home.page.vue b/src/pages/Home.page.vue index 4c80494a..b0b9fc00 100644 --- a/src/pages/Home.page.vue +++ b/src/pages/Home.page.vue @@ -12,58 +12,60 @@ useHead({ title: 'IT Tools - Handy online tools for developers' }); @@ -72,8 +74,12 @@ useHead({ title: 'IT Tools - Handy online tools for developers' }); padding-top: 50px; } +.n-h3 { + margin-bottom: 10px; +} + ::v-deep(.n-grid) { - margin-bottom: 12px; + margin-bottom: 30px; } .height-enter-active, From 7f964941d3ea259120e876445e61e764d41a8a23 Mon Sep 17 00:00:00 2001 From: Corentin Thomasset Date: Tue, 20 Dec 2022 20:57:24 +0100 Subject: [PATCH 088/449] chore(docs): updated readme --- README.md | 48 ++++++++++++++++++++++++++---------------------- 1 file changed, 26 insertions(+), 22 deletions(-) diff --git a/README.md b/README.md index efcc5538..0ba0dcc6 100644 --- a/README.md +++ b/README.md @@ -10,46 +10,53 @@ You have an idea of a tool? Submit a [feature request](https://github.com/Corent ## Contribute -### Recommended IDE Setup +## Recommended IDE Setup -[VSCode](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=johnsoncodehk.volar) (and disable Vetur) + [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=johnsoncodehk.vscode-typescript-vue-plugin). +[VSCode](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur) + [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin). -### Node version +## Type Support for `.vue` Imports in TS -Ensure you have the correct node/npm version +TypeScript cannot handle type information for `.vue` imports by default, so we replace the `tsc` CLI with `vue-tsc` for type checking. In editors, we need [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin) to make the TypeScript language service aware of `.vue` types. + +If the standalone TypeScript plugin doesn't feel fast enough to you, Volar has also implemented a [Take Over Mode](https://github.com/johnsoncodehk/volar/discussions/471#discussioncomment-1361669) that is more performant. You can enable it by the following steps: + +1. Disable the built-in TypeScript Extension + 1. Run `Extensions: Show Built-in Extensions` from VSCode's command palette + 2. Find `TypeScript and JavaScript Language Features`, right click and select `Disable (Workspace)` +2. Reload the VSCode window by running `Developer: Reload Window` from the command palette. + +## Customize configuration + +See [Vite Configuration Reference](https://vitejs.dev/config/). + +## Project Setup ```sh -nvm use +pnpm install ``` -### Project Setup +### Compile and Hot-Reload for Development ```sh -npm install +pnpm dev ``` -#### Compile and Hot-Reload for Development +### Type-Check, Compile and Minify for Production ```sh -npm run dev +pnpm build ``` -#### Type-Check, Compile and Minify for Production +### Run Unit Tests with [Vitest](https://vitest.dev/) ```sh -npm run build +pnpm test ``` -#### Run Unit Tests with [Vitest](https://vitest.dev/) +### Lint with [ESLint](https://eslint.org/) ```sh -npm run test -``` - -#### Lint with [ESLint](https://eslint.org/) - -```sh -npm run lint +pnpm lint ``` ### Create a new tool @@ -68,12 +75,9 @@ Coded with ❤️ by [Corentin Thomasset](//corentin-thomasset.fr). This project is continuously deployed using [vercel.com](https://vercel.com). - - IT Tools - Collection of handy online tools for devs, with great UX | Product Hunt IT Tools - Collection of handy online tools for devs, with great UX | Product Hunt - ## License This project is under the [GNU GPLv3](LICENSE). From cf723f144ee865b6de7323d3be58eb7a9586fa56 Mon Sep 17 00:00:00 2001 From: Corentin Thomasset Date: Tue, 20 Dec 2022 21:01:34 +0100 Subject: [PATCH 089/449] refactor(clean): removed empty style tag --- src/components/FavoriteButton.vue | 2 -- src/components/SearchBar.vue | 2 -- src/tools/base64-string-converter/base64-string-converter.vue | 2 -- src/tools/hmac-generator/hmac-generator.vue | 2 -- src/tools/math-evaluator/math-evaluator.vue | 2 -- src/tools/mime-types/mime-types.vue | 2 -- 6 files changed, 12 deletions(-) diff --git a/src/components/FavoriteButton.vue b/src/components/FavoriteButton.vue index 26791f3a..4b7f561f 100644 --- a/src/components/FavoriteButton.vue +++ b/src/components/FavoriteButton.vue @@ -36,5 +36,3 @@ function toggleFavorite(event: MouseEvent) { toolStore.addToolToFavorites({ tool }); } - - diff --git a/src/components/SearchBar.vue b/src/components/SearchBar.vue index 95919d5d..22842a42 100644 --- a/src/components/SearchBar.vue +++ b/src/components/SearchBar.vue @@ -82,5 +82,3 @@ function renderOption({ tool }: { tool: Tool }) {
- - diff --git a/src/tools/base64-string-converter/base64-string-converter.vue b/src/tools/base64-string-converter/base64-string-converter.vue index d725117c..649f9d39 100644 --- a/src/tools/base64-string-converter/base64-string-converter.vue +++ b/src/tools/base64-string-converter/base64-string-converter.vue @@ -53,5 +53,3 @@ const b64Validation = useValidation({ rules: [{ message: 'Invalid base64 string', validator: (value) => isValidBase64(value.trim()) }], }); - - diff --git a/src/tools/hmac-generator/hmac-generator.vue b/src/tools/hmac-generator/hmac-generator.vue index 3c524259..9cf2c9bf 100644 --- a/src/tools/hmac-generator/hmac-generator.vue +++ b/src/tools/hmac-generator/hmac-generator.vue @@ -94,5 +94,3 @@ const hmac = computed(() => ); const { copy } = useCopy({ source: hmac }); - - diff --git a/src/tools/math-evaluator/math-evaluator.vue b/src/tools/math-evaluator/math-evaluator.vue index 59754de6..16aa7c47 100644 --- a/src/tools/math-evaluator/math-evaluator.vue +++ b/src/tools/math-evaluator/math-evaluator.vue @@ -29,5 +29,3 @@ const expression = ref(''); const result = computed(() => withDefaultOnError(() => evaluate(expression.value) ?? '', '')); - - diff --git a/src/tools/mime-types/mime-types.vue b/src/tools/mime-types/mime-types.vue index 0c7a5eb0..eb08124f 100644 --- a/src/tools/mime-types/mime-types.vue +++ b/src/tools/mime-types/mime-types.vue @@ -95,5 +95,3 @@ const selectedExtension = ref(undefined); const mimeTypeFound = computed(() => (selectedExtension.value ? extensionToMimeType[selectedExtension.value] : [])); - - From 40872859a580a20bb838b79db2b3c88c00995e37 Mon Sep 17 00:00:00 2001 From: Corentin Thomasset Date: Tue, 20 Dec 2022 21:15:00 +0100 Subject: [PATCH 090/449] refactor(clean): removed unused import --- src/tools/index.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/tools/index.ts b/src/tools/index.ts index 38975f61..3b94cb4c 100644 --- a/src/tools/index.ts +++ b/src/tools/index.ts @@ -1,5 +1,3 @@ -import { LockOpen } from '@vicons/tabler'; - import { tool as chmodCalculator } from './chmod-calculator'; import { tool as mimeTypes } from './mime-types'; import { tool as otpCodeGeneratorAndValidator } from './otp-code-generator-and-validator'; From bfc2e24bbfc08f67ed9c9b1d93474029bc01dc8b Mon Sep 17 00:00:00 2001 From: Corentin Thomasset Date: Wed, 21 Dec 2022 00:03:31 +0100 Subject: [PATCH 091/449] feat(tracker): added actions monitoring --- src/components/SearchBar.vue | 1 + src/layouts/base.layout.vue | 1 + src/modules/tracker/tracker.services.ts | 11 +++++++++++ src/modules/tracker/tracker.types.ts | 3 +++ src/pages/About.vue | 1 + src/plugins/plausible.plugin.ts | 3 ++- src/shims.d.ts | 7 +++++++ 7 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 src/modules/tracker/tracker.services.ts create mode 100644 src/modules/tracker/tracker.types.ts diff --git a/src/components/SearchBar.vue b/src/components/SearchBar.vue index 22842a42..a93f46a1 100644 --- a/src/components/SearchBar.vue +++ b/src/components/SearchBar.vue @@ -61,6 +61,7 @@ function renderOption({ tool }: { tool: Tool }) { :render-label="renderOption" :default-value="'aa'" :get-show="() => true" + :on-focus="() => $tracker.trackEvent({ eventName: 'Search-bar focused' })" >