Kevin Midboe f98fdb6860 Replace emojis with SVG icons in Plex library section and add clickable links
Modernize the Plex library UI by replacing emoji icons with proper SVG
icons and making library items clickable to open in Plex.

New icons:
- Created IconMusic.vue for music/album libraries
- Created IconClock.vue for watch time display

PlexLibraryStats updates:
- Replace emoji icons (🎬, 📺, 🎵, ⏱️) with IconMovie, IconShow, IconMusic, IconClock
- Icons use highlight color with hover effects
- Proper sizing: 2.5rem desktop, 2rem mobile

PlexLibraryModal updates:
- Replace emoji in header with dynamic icon component
- Icon sized at 48px with highlight color
- Better visual consistency

PlexLibraryItem updates:
- Add support for clickable links to Plex web interface
- Items render as <a> tags when plexUrl is available
- Fallback icons now use SVG components instead of emojis
- Non-linkable items have disabled hover state

plexHelpers updates:
- processLibraryItem now includes ratingKey and plexUrl
- plexUrl format: {serverUrl}/web/index.html#!/server/library/metadata/{ratingKey}
- Added getLibraryIconComponent helper function

Benefits:
- Professional SVG icons instead of emojis (consistent cross-platform)
- Clickable library items open directly in Plex
- Better accessibility with proper link semantics
- Scalable icons that look sharp at any size
- Consistent color theming with site palette
2026-02-27 19:21:13 +01:00
2022-08-15 20:17:37 +02:00
2019-10-23 00:43:17 +02:00
2026-02-24 00:22:31 +01:00
2026-02-24 00:22:51 +01:00
2026-02-24 18:43:26 +01:00
2017-03-21 17:12:39 +02:00
2026-02-24 00:22:51 +01:00

Seasoned Request

Seasoned request is frontend vue application for searching, requesting and viewing account watch activity.

Config setup

# make copy of example environment file
cp .env.example .env
# .env sane default values
SEASONED_API=
ELASTIC=
ELASTIC_INDEX=shows,movies
SEASONED_DOMAIN=
  • Leave SEASONED_API empty to request /api from same origin and proxy passed by nginx, set if hosting seasonedShows backend api locally.
  • Elastic is optional and can be used for a instant search feature for all movies and shows registered in tmdb, leave empty to disable.
# .env example values
SEASONED_API=http://localhost:31459
ELASTIC=http://localhost:9200
ELASTIC_INDEX=shows,movies
SEASONED_DOMAIN=request.movie

Build Steps

# install dependencies
yarn

# build vue project using webpack
yarn build

# test or host built files using docker, might require sudo:
docker build -t seasoned .
docker run -d -p 5000:5000 --name seasoned-request --env-file .env seasoned

Development Steps

# serve project with hot reloading at localhost:8080
yarn dev

To proxy requests to /api either update SEASONED_API in .env or run set environment variable, e.g.:

# export and run
export SEASONED_API=http://localhost:31459
yarn dev

# or run with environment variable inline
SEASONED_API=http://localhost:31459 yarn dev

Documentation

All api functions are documented in /docs and found here.
html version also available

License

MIT

Description
No description provided
Readme MIT 9.9 MiB
Languages
Vue 78.2%
TypeScript 17.4%
SCSS 3.5%
JavaScript 0.5%
HTML 0.2%
Other 0.2%