diff --git a/README.md b/README.md index c7b09c5..5d2f593 100644 --- a/README.md +++ b/README.md @@ -1,45 +1,28 @@ # featherfin -This template should help get you started developing with Vue 3 in Vite. - -## Recommended IDE Setup - -[VSCode](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur). - -## Type Support for `.vue` Imports in TS - -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 [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) to make the TypeScript language service aware of `.vue` types. - -## Customize configuration - -See [Vite Configuration Reference](https://vite.dev/config/). - -## Project Setup - -```sh -bun install -``` - -### Compile and Hot-Reload for Development - -```sh -bun dev -``` - -### Type-Check, Compile and Minify for Production - -```sh -bun run build -``` - -### Run Unit Tests with [Vitest](https://vitest.dev/) - -```sh -bun test:unit -``` - -### Lint with [ESLint](https://eslint.org/) - -```sh -bun lint -``` +### TODO + +- [ ] Add episode title and SXXEXX to item screen for episode +- [ ] Enlarge Next Up section on Home +- [ ] Fix row spacing on Home +- [ ] Add Continue Watching section to Home +- [ ] Finish Item page + - [ ] Add Actor List to all items except seasons + - [ ] Add episode list for series/seasons + - [ ] Add next episode list for episode + - [ ] Add related shows/movies to series and movies +- [ ] Finish implementing MediaInfo +- [ ] Move all MediaInfo stand-ins to the component +- [ ] Make Like and Favorite buttons work + - [ ] Show state + - [ ] Update state +- [ ] Make play buttons on media start playing + - [ ] Movies start playing movie + - [ ] Episodes play episode + - [ ] Series play next episode +- [ ] Add sorting and filters to BrowseView + - [ ] Design UI elements + - [ ] Implement +- [ ] Add search +- [ ] Make featured media carousel work + - [ ] a lot diff --git a/src/assets/main.css b/src/assets/main.css index b8d0d73..cd42290 100644 --- a/src/assets/main.css +++ b/src/assets/main.css @@ -142,6 +142,13 @@ a:hover { line-clamp: 6; -webkit-box-orient: vertical; } +.clamp-8 { + overflow: hidden; + display: -webkit-box; + -webkit-line-clamp: 8; /* number of lines to show */ + line-clamp: 8; + -webkit-box-orient: vertical; +} .no-select { user-select: none; diff --git a/src/components/MediaGrid.vue b/src/components/MediaGrid.vue index 9716f3a..a291dae 100644 --- a/src/components/MediaGrid.vue +++ b/src/components/MediaGrid.vue @@ -119,7 +119,7 @@ onMounted(() => { diff --git a/src/components/MediaInfo.vue b/src/components/MediaInfo.vue index 8776b8a..60d5c12 100644 --- a/src/components/MediaInfo.vue +++ b/src/components/MediaInfo.vue @@ -1,3 +1,13 @@ + + diff --git a/src/components/ScrollerItemPortrait.vue b/src/components/ScrollerItemPortrait.vue index e1bc265..1434840 100644 --- a/src/components/ScrollerItemPortrait.vue +++ b/src/components/ScrollerItemPortrait.vue @@ -23,8 +23,8 @@ const props = defineProps<{ :src="props.item.image" alt="" :style="{ - width: `${120}px`, - height: `${120 * (3 / 2)}px`, + width: `${160}px`, + height: `${160 * (3 / 2)}px`, }" /> @@ -41,10 +41,10 @@ const props = defineProps<{ {{ item.infoSubtext }} -
{{ props.item.summary }}
+
{{ props.item.summary }}
{{ props.item.date }}
-
{{ props.item.runtime }}
+
{{ props.item.runtime }}
{{ props.item.imdbRating }} @@ -52,15 +52,14 @@ const props = defineProps<{
{{ props.item.MPAA }}
-
Ends at 6:23pm
-
+
{{ props.item.title }}
-
+
{{ props.item.subtext }}
@@ -75,8 +74,8 @@ const props = defineProps<{ } .play-icon { position: absolute; - top: 75px; - left: 35px; + top: 85px; + left: 45px; width: 35px; height: 35px; cursor: pointer; @@ -96,8 +95,8 @@ const props = defineProps<{ background: rgba(122, 122, 122, 0.2); } .scroller-item-img:hover .play-icon { - top: 100px; - left: 55px; + top: 50%; + left: 50%; opacity: 100%; transition: all var(--hover-animation-speed) ease var(--hover-animation-delay), @@ -116,7 +115,7 @@ const props = defineProps<{ transition-duration: 0.3s; } .scroller-item-img:hover img { - transform: scale(1.35) translateX(16px) translateY(23px); + transform: scale(1.3) translateX(19px) translateY(28px); cursor: pointer; transition: all var(--hover-animation-speed) ease, @@ -164,17 +163,17 @@ const props = defineProps<{ top: 0; left: 0; z-index: 0; - width: 120px; - height: 180px; + width: 160px; + height: 240px; visibility: hidden; background-color: var(--color-background-grey); transition-duration: 0.3s; } .scroller-item-img:hover .info-box { visibility: visible; - transform: translateX(162px); - width: 360px; - height: 243px; + transform: translateX(208px); + width: 240px; + height: 312px; z-index: 3; transition: all var(--hover-animation-speed) ease var(--hover-animation-delay), @@ -190,8 +189,9 @@ const props = defineProps<{ flex-direction: column; align-items: baseline; justify-content: space-between; - gap: 2em; + gap: 1em; min-height: 95%; + font-size: 13px; } .scroller-item-img:hover .info-box-content { max-height: 240px; @@ -212,6 +212,6 @@ const props = defineProps<{ .info-box-misc-info { display: flex; justify-content: space-between; - min-width: 90%; + min-width: 95%; }