diff --git a/frontend/scripts/fetch-icons.mjs b/frontend/scripts/fetch-icons.mjs new file mode 100644 index 0000000..b293fc4 --- /dev/null +++ b/frontend/scripts/fetch-icons.mjs @@ -0,0 +1,75 @@ +/* + * Vendor the icon set into the repo. + * + * The app used to fetch every `` from ka-f.fontawesome.com at + * runtime, which meant it had no icons at all offline, on a captive + * portal or behind a firewall (audit H-4 / perf.M9). Bundling them is + * the fix; this script is how the bundle is produced, so "where did + * these SVGs come from" has an answer that is a command rather than a + * memory. + * + * IT MUST BE FONT AWESOME **FREE**. The kit CDN the app was hitting + * serves *Pro* SVGs — every file carries a "Commercial License" + * comment — and those cannot be redistributed in this repository. The + * Free set is CC BY 4.0, which can, with attribution; LICENSE.txt is + * copied next to the icons for exactly that reason. Every name the app + * uses happens to exist in Free, so this costs nothing visually, but + * a future addition might not: if a name is missing here, pick a + * different icon rather than reaching for the Pro one. + * + * Usage: + * node frontend/scripts/fetch-icons.mjs + * + * Reads names from src/icons/names.txt, writes src/assets/icons/fa/. + */ + +import { execFileSync } from 'node:child_process'; +import { + copyFileSync, existsSync, mkdirSync, mkdtempSync, readFileSync, rmSync, + readdirSync, +} from 'node:fs'; +import { tmpdir } from 'node:os'; +import { dirname, join, resolve } from 'node:path'; +import { fileURLToPath } from 'node:url'; + +const HERE = dirname(fileURLToPath(import.meta.url)); +const FRONTEND = resolve(HERE, '..'); +const NAMES = resolve(FRONTEND, 'src/icons/names.txt'); +const DEST = resolve(FRONTEND, 'src/assets/icons/fa'); +const PKG = '@fortawesome/fontawesome-free@7.3.1'; + +const names = readFileSync(NAMES, 'utf8') + .split('\n') + .map((l) => l.replace(/#.*$/, '').trim()) + .filter(Boolean); + +const work = mkdtempSync(join(tmpdir(), 'yj-icons-')); + +try { + execFileSync('npm', ['pack', PKG], { cwd: work, stdio: 'pipe' }); + const tgz = readdirSync(work).find((f) => f.endsWith('.tgz')); + execFileSync('tar', ['xf', tgz], { cwd: work }); + + const src = join(work, 'package'); + rmSync(DEST, { recursive: true, force: true }); + + for (const name of names) { + const from = join(src, 'svgs', `${name}.svg`); + if (!existsSync(from)) { + console.error( + `fetch-icons: '${name}' is not in Font Awesome Free.\n` + + ' Pick an icon that is; do not vendor the Pro version.', + ); + process.exit(1); + } + + const to = join(DEST, `${name}.svg`); + mkdirSync(dirname(to), { recursive: true }); + copyFileSync(from, to); + } + + copyFileSync(join(src, 'LICENSE.txt'), join(DEST, 'LICENSE.txt')); + console.log(`fetch-icons: vendored ${names.length} icons from ${PKG}`); +} finally { + rmSync(work, { recursive: true, force: true }); +} diff --git a/frontend/scripts/icon-sweep.mjs b/frontend/scripts/icon-sweep.mjs new file mode 100644 index 0000000..87e4d08 --- /dev/null +++ b/frontend/scripts/icon-sweep.mjs @@ -0,0 +1,73 @@ +/* + * Which icons does this app actually use? + * + * A static grep cannot answer that: twenty call sites pass a computed + * name (`this.favCtrl.iconName`, `jobIcon(job)`, `TONE_ICONS[tone]`), + * and the answer depends on state. So ask the running app instead — + * before the icons are bundled, every one of them is a request to + * ka-f.fontawesome.com, which makes the CDN request log an exact + * inventory of what has to be vendored. + * + * This is a one-shot development tool, not part of any build. It is + * kept because the list it produces will go stale the first time a + * component grows a new state, and rerunning it is the cheapest way to + * find out. `frontend/src/icons/manifest.ts` is the committed answer. + * + * Usage: make dev-headless SEED=default, then + * node frontend/scripts/icon-sweep.mjs + */ + +import { chromium } from '../../e2e/node_modules/@playwright/test/index.mjs'; + +const URL_BASE = process.env.YJ_URL ?? 'http://localhost:34115'; + +const VIEWS = [ + 'home', 'tracks', 'albums', 'artists', 'genres', 'playlists', + 'explore', 'autotag', 'downloads', 'jobs', 'settings', +]; + +const found = new Set(); + +const browser = await chromium.launch(); +const page = await browser.newPage({ viewport: { width: 1440, height: 900 } }); + +page.on('request', (req) => { + const m = /fontawesome\.com\/.*\/svgs\/([^/]+)\/([^/?]+)\.svg/.exec(req.url()); + if (m) found.add(`${m[1]}/${m[2]}`); +}); + +await page.goto(URL_BASE, { waitUntil: 'load' }); +await page.waitForTimeout(3000); + +for (const view of VIEWS) { + await page.evaluate((v) => document.dispatchEvent( + new CustomEvent('navigate', { detail: { view: v } }), + ), view); + await page.waitForTimeout(1500); +} + +// Also collect what is in the DOM but may have been served from the +// icon module's own cache rather than re-requested. +const inDom = await page.evaluate(() => { + const names = new Set(); + const walk = (root) => { + for (const el of root.querySelectorAll('*')) { + if (el.tagName === 'WA-ICON' && el.getAttribute('name')) { + names.add(el.getAttribute('name')); + } + if (el.shadowRoot) walk(el.shadowRoot); + } + }; + walk(document); + + return [...names]; +}); + +await browser.close(); + +for (const n of inDom) { + if (![...found].some((f) => f.endsWith('/' + n))) found.add(`?/${n}`); +} + +console.log([...found].sort().join('\n')); +console.log(`\n${found.size} icons`); diff --git a/frontend/src/assets/icons/fa/LICENSE.txt b/frontend/src/assets/icons/fa/LICENSE.txt new file mode 100644 index 0000000..69403b2 --- /dev/null +++ b/frontend/src/assets/icons/fa/LICENSE.txt @@ -0,0 +1,165 @@ +Fonticons, Inc. (https://fontawesome.com) + +-------------------------------------------------------------------------------- + +Font Awesome Free License + +Font Awesome Free is free, open source, and GPL friendly. You can use it for +commercial projects, open source projects, or really almost whatever you want. +Full Font Awesome Free license: https://fontawesome.com/license/free. + +-------------------------------------------------------------------------------- + +# Icons: CC BY 4.0 License (https://creativecommons.org/licenses/by/4.0/) + +The Font Awesome Free download is licensed under a Creative Commons +Attribution 4.0 International License and applies to all icons packaged +as SVG and JS file types. + +-------------------------------------------------------------------------------- + +# Fonts: SIL OFL 1.1 License + +In the Font Awesome Free download, the SIL OFL license applies to all icons +packaged as web and desktop font files. + +Copyright (c) 2026 Fonticons, Inc. (https://fontawesome.com) +with Reserved Font Name: "Font Awesome". + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + +SIL OPEN FONT LICENSE +Version 1.1 - 26 February 2007 + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting — in part or in whole — any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. + +-------------------------------------------------------------------------------- + +# Code: MIT License (https://opensource.org/licenses/MIT) + +In the Font Awesome Free download, the MIT license applies to all non-font and +non-icon files. + +Copyright 2026 Fonticons, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in the +Software without restriction, including without limitation the rights to use, copy, +modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, +and to permit persons to whom the Software is furnished to do so, subject to the +following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +-------------------------------------------------------------------------------- + +# Attribution + +Attribution is required by MIT, SIL OFL, and CC BY licenses. Downloaded Font +Awesome Free files already contain embedded comments with sufficient +attribution, so you shouldn't need to do anything additional when using these +files normally. + +We've kept attribution comments terse, so we ask that you do not actively work +to remove them from files, especially code. They're a great way for folks to +learn about Font Awesome. + +-------------------------------------------------------------------------------- + +# Brand Icons + +All brand icons are trademarks of their respective owners. The use of these +trademarks does not indicate endorsement of the trademark holder by Font +Awesome, nor vice versa. **Please do not use brand logos for any purpose except +to represent the company, product, or service to which they refer.** diff --git a/frontend/src/assets/icons/fa/regular/heart.svg b/frontend/src/assets/icons/fa/regular/heart.svg new file mode 100644 index 0000000..0e7907e --- /dev/null +++ b/frontend/src/assets/icons/fa/regular/heart.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/assets/icons/fa/solid/arrow-down-wide-short.svg b/frontend/src/assets/icons/fa/solid/arrow-down-wide-short.svg new file mode 100644 index 0000000..7872b84 --- /dev/null +++ b/frontend/src/assets/icons/fa/solid/arrow-down-wide-short.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/assets/icons/fa/solid/arrow-left.svg b/frontend/src/assets/icons/fa/solid/arrow-left.svg new file mode 100644 index 0000000..775f120 --- /dev/null +++ b/frontend/src/assets/icons/fa/solid/arrow-left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/assets/icons/fa/solid/arrow-rotate-right.svg b/frontend/src/assets/icons/fa/solid/arrow-rotate-right.svg new file mode 100644 index 0000000..0b0f2ca --- /dev/null +++ b/frontend/src/assets/icons/fa/solid/arrow-rotate-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/assets/icons/fa/solid/arrow-up-short-wide.svg b/frontend/src/assets/icons/fa/solid/arrow-up-short-wide.svg new file mode 100644 index 0000000..a7d02b9 --- /dev/null +++ b/frontend/src/assets/icons/fa/solid/arrow-up-short-wide.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/assets/icons/fa/solid/arrows-rotate.svg b/frontend/src/assets/icons/fa/solid/arrows-rotate.svg new file mode 100644 index 0000000..a5d32a4 --- /dev/null +++ b/frontend/src/assets/icons/fa/solid/arrows-rotate.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/assets/icons/fa/solid/backward-step.svg b/frontend/src/assets/icons/fa/solid/backward-step.svg new file mode 100644 index 0000000..ed7c2b8 --- /dev/null +++ b/frontend/src/assets/icons/fa/solid/backward-step.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/assets/icons/fa/solid/bookmark.svg b/frontend/src/assets/icons/fa/solid/bookmark.svg new file mode 100644 index 0000000..9fd4af6 --- /dev/null +++ b/frontend/src/assets/icons/fa/solid/bookmark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/assets/icons/fa/solid/box-open.svg b/frontend/src/assets/icons/fa/solid/box-open.svg new file mode 100644 index 0000000..e731bd2 --- /dev/null +++ b/frontend/src/assets/icons/fa/solid/box-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/assets/icons/fa/solid/check.svg b/frontend/src/assets/icons/fa/solid/check.svg new file mode 100644 index 0000000..eec726c --- /dev/null +++ b/frontend/src/assets/icons/fa/solid/check.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/assets/icons/fa/solid/chevron-down.svg b/frontend/src/assets/icons/fa/solid/chevron-down.svg new file mode 100644 index 0000000..086dc14 --- /dev/null +++ b/frontend/src/assets/icons/fa/solid/chevron-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/assets/icons/fa/solid/chevron-right.svg b/frontend/src/assets/icons/fa/solid/chevron-right.svg new file mode 100644 index 0000000..51b6c0b --- /dev/null +++ b/frontend/src/assets/icons/fa/solid/chevron-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/assets/icons/fa/solid/circle-check.svg b/frontend/src/assets/icons/fa/solid/circle-check.svg new file mode 100644 index 0000000..7b6658a --- /dev/null +++ b/frontend/src/assets/icons/fa/solid/circle-check.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/assets/icons/fa/solid/circle-exclamation.svg b/frontend/src/assets/icons/fa/solid/circle-exclamation.svg new file mode 100644 index 0000000..56a592e --- /dev/null +++ b/frontend/src/assets/icons/fa/solid/circle-exclamation.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/assets/icons/fa/solid/circle-info.svg b/frontend/src/assets/icons/fa/solid/circle-info.svg new file mode 100644 index 0000000..bffb10b --- /dev/null +++ b/frontend/src/assets/icons/fa/solid/circle-info.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/assets/icons/fa/solid/circle-minus.svg b/frontend/src/assets/icons/fa/solid/circle-minus.svg new file mode 100644 index 0000000..47e80cc --- /dev/null +++ b/frontend/src/assets/icons/fa/solid/circle-minus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/assets/icons/fa/solid/circle-question.svg b/frontend/src/assets/icons/fa/solid/circle-question.svg new file mode 100644 index 0000000..3aec3ac --- /dev/null +++ b/frontend/src/assets/icons/fa/solid/circle-question.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/assets/icons/fa/solid/clock-rotate-left.svg b/frontend/src/assets/icons/fa/solid/clock-rotate-left.svg new file mode 100644 index 0000000..aec098e --- /dev/null +++ b/frontend/src/assets/icons/fa/solid/clock-rotate-left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/assets/icons/fa/solid/compact-disc.svg b/frontend/src/assets/icons/fa/solid/compact-disc.svg new file mode 100644 index 0000000..7af6474 --- /dev/null +++ b/frontend/src/assets/icons/fa/solid/compact-disc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/assets/icons/fa/solid/copy.svg b/frontend/src/assets/icons/fa/solid/copy.svg new file mode 100644 index 0000000..14c5378 --- /dev/null +++ b/frontend/src/assets/icons/fa/solid/copy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/assets/icons/fa/solid/database.svg b/frontend/src/assets/icons/fa/solid/database.svg new file mode 100644 index 0000000..d06b9e6 --- /dev/null +++ b/frontend/src/assets/icons/fa/solid/database.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/assets/icons/fa/solid/download.svg b/frontend/src/assets/icons/fa/solid/download.svg new file mode 100644 index 0000000..6ccd41a --- /dev/null +++ b/frontend/src/assets/icons/fa/solid/download.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/assets/icons/fa/solid/file-import.svg b/frontend/src/assets/icons/fa/solid/file-import.svg new file mode 100644 index 0000000..7624811 --- /dev/null +++ b/frontend/src/assets/icons/fa/solid/file-import.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/assets/icons/fa/solid/filter.svg b/frontend/src/assets/icons/fa/solid/filter.svg new file mode 100644 index 0000000..36c24e2 --- /dev/null +++ b/frontend/src/assets/icons/fa/solid/filter.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/assets/icons/fa/solid/floppy-disk.svg b/frontend/src/assets/icons/fa/solid/floppy-disk.svg new file mode 100644 index 0000000..f95fa0b --- /dev/null +++ b/frontend/src/assets/icons/fa/solid/floppy-disk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/assets/icons/fa/solid/folder.svg b/frontend/src/assets/icons/fa/solid/folder.svg new file mode 100644 index 0000000..a17708b --- /dev/null +++ b/frontend/src/assets/icons/fa/solid/folder.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/assets/icons/fa/solid/forward-step.svg b/frontend/src/assets/icons/fa/solid/forward-step.svg new file mode 100644 index 0000000..47aaf6f --- /dev/null +++ b/frontend/src/assets/icons/fa/solid/forward-step.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/assets/icons/fa/solid/gear.svg b/frontend/src/assets/icons/fa/solid/gear.svg new file mode 100644 index 0000000..e873cf2 --- /dev/null +++ b/frontend/src/assets/icons/fa/solid/gear.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/assets/icons/fa/solid/globe.svg b/frontend/src/assets/icons/fa/solid/globe.svg new file mode 100644 index 0000000..de3e09b --- /dev/null +++ b/frontend/src/assets/icons/fa/solid/globe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/assets/icons/fa/solid/heart.svg b/frontend/src/assets/icons/fa/solid/heart.svg new file mode 100644 index 0000000..059c9ee --- /dev/null +++ b/frontend/src/assets/icons/fa/solid/heart.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/assets/icons/fa/solid/home.svg b/frontend/src/assets/icons/fa/solid/home.svg new file mode 100644 index 0000000..44ab856 --- /dev/null +++ b/frontend/src/assets/icons/fa/solid/home.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/assets/icons/fa/solid/hourglass-half.svg b/frontend/src/assets/icons/fa/solid/hourglass-half.svg new file mode 100644 index 0000000..d1c5324 --- /dev/null +++ b/frontend/src/assets/icons/fa/solid/hourglass-half.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/assets/icons/fa/solid/house.svg b/frontend/src/assets/icons/fa/solid/house.svg new file mode 100644 index 0000000..44ab856 --- /dev/null +++ b/frontend/src/assets/icons/fa/solid/house.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/assets/icons/fa/solid/images.svg b/frontend/src/assets/icons/fa/solid/images.svg new file mode 100644 index 0000000..89fe02d --- /dev/null +++ b/frontend/src/assets/icons/fa/solid/images.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/assets/icons/fa/solid/info.svg b/frontend/src/assets/icons/fa/solid/info.svg new file mode 100644 index 0000000..484e5fe --- /dev/null +++ b/frontend/src/assets/icons/fa/solid/info.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/assets/icons/fa/solid/list-check.svg b/frontend/src/assets/icons/fa/solid/list-check.svg new file mode 100644 index 0000000..bbdafc4 --- /dev/null +++ b/frontend/src/assets/icons/fa/solid/list-check.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/assets/icons/fa/solid/list.svg b/frontend/src/assets/icons/fa/solid/list.svg new file mode 100644 index 0000000..275cc46 --- /dev/null +++ b/frontend/src/assets/icons/fa/solid/list.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/assets/icons/fa/solid/magnifying-glass.svg b/frontend/src/assets/icons/fa/solid/magnifying-glass.svg new file mode 100644 index 0000000..435330b --- /dev/null +++ b/frontend/src/assets/icons/fa/solid/magnifying-glass.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/assets/icons/fa/solid/masks-theater.svg b/frontend/src/assets/icons/fa/solid/masks-theater.svg new file mode 100644 index 0000000..dd231ea --- /dev/null +++ b/frontend/src/assets/icons/fa/solid/masks-theater.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/assets/icons/fa/solid/music.svg b/frontend/src/assets/icons/fa/solid/music.svg new file mode 100644 index 0000000..ca7e5dd --- /dev/null +++ b/frontend/src/assets/icons/fa/solid/music.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/assets/icons/fa/solid/pause.svg b/frontend/src/assets/icons/fa/solid/pause.svg new file mode 100644 index 0000000..11aa76e --- /dev/null +++ b/frontend/src/assets/icons/fa/solid/pause.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/assets/icons/fa/solid/pen-to-square.svg b/frontend/src/assets/icons/fa/solid/pen-to-square.svg new file mode 100644 index 0000000..d1225d5 --- /dev/null +++ b/frontend/src/assets/icons/fa/solid/pen-to-square.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/assets/icons/fa/solid/pen.svg b/frontend/src/assets/icons/fa/solid/pen.svg new file mode 100644 index 0000000..c47033b --- /dev/null +++ b/frontend/src/assets/icons/fa/solid/pen.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/assets/icons/fa/solid/play.svg b/frontend/src/assets/icons/fa/solid/play.svg new file mode 100644 index 0000000..91f4860 --- /dev/null +++ b/frontend/src/assets/icons/fa/solid/play.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/assets/icons/fa/solid/plus.svg b/frontend/src/assets/icons/fa/solid/plus.svg new file mode 100644 index 0000000..24e6032 --- /dev/null +++ b/frontend/src/assets/icons/fa/solid/plus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/assets/icons/fa/solid/quote-left.svg b/frontend/src/assets/icons/fa/solid/quote-left.svg new file mode 100644 index 0000000..c65c3fb --- /dev/null +++ b/frontend/src/assets/icons/fa/solid/quote-left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/assets/icons/fa/solid/remove.svg b/frontend/src/assets/icons/fa/solid/remove.svg new file mode 100644 index 0000000..62d7227 --- /dev/null +++ b/frontend/src/assets/icons/fa/solid/remove.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/assets/icons/fa/solid/repeat.svg b/frontend/src/assets/icons/fa/solid/repeat.svg new file mode 100644 index 0000000..66a32f6 --- /dev/null +++ b/frontend/src/assets/icons/fa/solid/repeat.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/assets/icons/fa/solid/rotate.svg b/frontend/src/assets/icons/fa/solid/rotate.svg new file mode 100644 index 0000000..cfa7233 --- /dev/null +++ b/frontend/src/assets/icons/fa/solid/rotate.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/assets/icons/fa/solid/running.svg b/frontend/src/assets/icons/fa/solid/running.svg new file mode 100644 index 0000000..7d25f18 --- /dev/null +++ b/frontend/src/assets/icons/fa/solid/running.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/assets/icons/fa/solid/shuffle.svg b/frontend/src/assets/icons/fa/solid/shuffle.svg new file mode 100644 index 0000000..490405b --- /dev/null +++ b/frontend/src/assets/icons/fa/solid/shuffle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/assets/icons/fa/solid/star.svg b/frontend/src/assets/icons/fa/solid/star.svg new file mode 100644 index 0000000..c0b34f3 --- /dev/null +++ b/frontend/src/assets/icons/fa/solid/star.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/assets/icons/fa/solid/stop.svg b/frontend/src/assets/icons/fa/solid/stop.svg new file mode 100644 index 0000000..030b63b --- /dev/null +++ b/frontend/src/assets/icons/fa/solid/stop.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/assets/icons/fa/solid/tag.svg b/frontend/src/assets/icons/fa/solid/tag.svg new file mode 100644 index 0000000..2d63a2e --- /dev/null +++ b/frontend/src/assets/icons/fa/solid/tag.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/assets/icons/fa/solid/tags.svg b/frontend/src/assets/icons/fa/solid/tags.svg new file mode 100644 index 0000000..243e50c --- /dev/null +++ b/frontend/src/assets/icons/fa/solid/tags.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/assets/icons/fa/solid/trash.svg b/frontend/src/assets/icons/fa/solid/trash.svg new file mode 100644 index 0000000..51ff65a --- /dev/null +++ b/frontend/src/assets/icons/fa/solid/trash.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/assets/icons/fa/solid/triangle-exclamation.svg b/frontend/src/assets/icons/fa/solid/triangle-exclamation.svg new file mode 100644 index 0000000..b1da7b9 --- /dev/null +++ b/frontend/src/assets/icons/fa/solid/triangle-exclamation.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/assets/icons/fa/solid/user-group.svg b/frontend/src/assets/icons/fa/solid/user-group.svg new file mode 100644 index 0000000..cd19f73 --- /dev/null +++ b/frontend/src/assets/icons/fa/solid/user-group.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/assets/icons/fa/solid/user.svg b/frontend/src/assets/icons/fa/solid/user.svg new file mode 100644 index 0000000..44ef04b --- /dev/null +++ b/frontend/src/assets/icons/fa/solid/user.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/assets/icons/fa/solid/volume-high.svg b/frontend/src/assets/icons/fa/solid/volume-high.svg new file mode 100644 index 0000000..76cf5fd --- /dev/null +++ b/frontend/src/assets/icons/fa/solid/volume-high.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/assets/icons/fa/solid/volume-low.svg b/frontend/src/assets/icons/fa/solid/volume-low.svg new file mode 100644 index 0000000..93294ca --- /dev/null +++ b/frontend/src/assets/icons/fa/solid/volume-low.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/assets/icons/fa/solid/volume-off.svg b/frontend/src/assets/icons/fa/solid/volume-off.svg new file mode 100644 index 0000000..312c754 --- /dev/null +++ b/frontend/src/assets/icons/fa/solid/volume-off.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/assets/icons/fa/solid/volume-xmark.svg b/frontend/src/assets/icons/fa/solid/volume-xmark.svg new file mode 100644 index 0000000..09d0b8f --- /dev/null +++ b/frontend/src/assets/icons/fa/solid/volume-xmark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/assets/icons/fa/solid/xmark.svg b/frontend/src/assets/icons/fa/solid/xmark.svg new file mode 100644 index 0000000..62d7227 --- /dev/null +++ b/frontend/src/assets/icons/fa/solid/xmark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/icons/index.ts b/frontend/src/icons/index.ts new file mode 100644 index 0000000..2f5e6d3 --- /dev/null +++ b/frontend/src/icons/index.ts @@ -0,0 +1,103 @@ +/** + * Bundled icons. + * + * Web Awesome's default icon library resolves every `` to + * `https://ka-f.fontawesome.com/releases/v7.1.0/svgs/