diff --git a/package.json b/package.json index 12eff5fb..46bbf826 100644 --- a/package.json +++ b/package.json @@ -70,6 +70,7 @@ "react-shadow": "^20.4.0", "rimraf": "^5.0.5", "sortablejs": "^1.15.2", + "swiper": "^11.1.0", "tailwindcss": "^3.4.1", "ts-loader": "^9.5.1", "typescript": "^5.3.3", diff --git a/src/interface/components/store/header.tsx b/src/interface/components/store/header.tsx new file mode 100644 index 00000000..d33d362c --- /dev/null +++ b/src/interface/components/store/header.tsx @@ -0,0 +1,30 @@ +import logo from '../../../resources/icons/betterseqta-dark-full.png'; +import logoDark from '../../../resources/icons/betterseqta-light-full.png'; + +export default function header({ searchTerm, setSearchTerm }: { searchTerm: string, setSearchTerm: (value: string) => void }) { + return
+
+ + +
+ setSearchTerm(e.target.value)} + className="px-4 py-2 pl-10 bg-gray-100 rounded-full dark:bg-zinc-700 dark:text-gray-100 focus:outline-none focus:border-transparent" /> + + + +
+
+
; +} diff --git a/src/interface/index.html b/src/interface/index.html index ba020507..43c86d39 100644 --- a/src/interface/index.html +++ b/src/interface/index.html @@ -5,7 +5,7 @@ BetterSEQTA+ Settings - +
diff --git a/src/interface/main.tsx b/src/interface/main.tsx index 6a4e0d8d..23ae293e 100644 --- a/src/interface/main.tsx +++ b/src/interface/main.tsx @@ -11,7 +11,7 @@ import ThemeCreator from './pages/ThemeCreator'; import Store from './pages/Store'; browser.storage.local.get().then(({ telemetry, DarkMode }) => { - if (DarkMode) document.body.classList.add('dark'); + if (DarkMode) document.documentElement.classList.add('dark'); if (telemetry === true) Sentry.init({ diff --git a/src/interface/pages/Store.tsx b/src/interface/pages/Store.tsx index a947a044..f1b4aab1 100644 --- a/src/interface/pages/Store.tsx +++ b/src/interface/pages/Store.tsx @@ -1,9 +1,112 @@ +import { useRef, useState } from 'react'; +import { Swiper, SwiperSlide } from 'swiper/react'; +import { Scrollbar, Autoplay } from 'swiper/modules'; +import Header from '../components/store/header'; + +import 'swiper/css'; +import 'swiper/css/pagination'; +import 'swiper/css/scrollbar'; +import 'swiper/css/autoplay'; + const Store = () => { + const [searchTerm, setSearchTerm] = useState(''); + const swiperCover = useRef(null); + + const coverThemes = [ + { + coverImage: 'https://via.placeholder.com/300x200', + name: 'Theme Name', + description: 'Theme description goes here.' + }, + { + coverImage: 'https://via.placeholder.com/300x200', + name: 'Theme Name', + description: 'Theme description goes here.' + }, + { + coverImage: 'https://via.placeholder.com/300x200', + name: 'Theme Name', + description: 'Theme description goes here.' + } + ] + return ( -
-

Store

+
+ +
+ +
+
+ console.log('slide change')} + onSwiper={(swiper) => console.log(swiper)} + > + { coverThemes.map((theme, index) => ( + + Theme Preview + + )) } + + + {/* pagination */} +
+ + + + + +
+
+
+ +
+ { + Array.from({ length: 30 }).map((_, index) => ( +
+ Theme Preview +
+

+ Theme Name +

+

+ Theme description goes here. +

+ +
+
))} +
- ) -} + ); +}; export default Store; \ No newline at end of file