-
-
-
-
-
-
-
- top100
-
-
- 404
-
-
-
+
+
+
+
+
+
+ {params => }
+
+
+ top100
+
+
+ 404
+
+
)
diff --git a/src/style/base.css b/src/style/base.css
new file mode 100644
index 0000000..6e8a07a
--- /dev/null
+++ b/src/style/base.css
@@ -0,0 +1,3 @@
+html, body {
+ margin: 0;
+}
diff --git a/src/themes/themes.js b/src/themes/themes.js
new file mode 100644
index 0000000..5926d1b
--- /dev/null
+++ b/src/themes/themes.js
@@ -0,0 +1,15 @@
+export const themeList = [
+ 'default',
+ 'default-dark',
+ 'nord',
+ 'solarized-dark',
+ 'solarized-light',
+ '_raw'
+]
+
+export const DEFAULT_THEME = themeList[0]
+
+export const assertTheme = theme =>
+ themeList.includes(theme)
+ ? theme
+ : DEFAULT_THEME
diff --git a/src/utils/utils.routing.js b/src/utils/utils.routing.js
index c586cea..2296ecf 100644
--- a/src/utils/utils.routing.js
+++ b/src/utils/utils.routing.js
@@ -20,7 +20,7 @@ export const useHashLocation = () => {
return [loc, navigate]
}
-export const buildPlayLinkHref = (url, theme = 'default') =>
+export const buildPlayLinkHref = (url, theme) =>
`/#/play/${theme}/${encodeURIComponent(url)}`
export const getFileExtension = fileName =>
diff --git a/src/views/Home.js b/src/views/Home.js
index 9d04922..1aae88a 100644
--- a/src/views/Home.js
+++ b/src/views/Home.js
@@ -5,17 +5,18 @@ import { Link } from 'wouter-preact'
import FileSelector from '~/src/components/FileSelector'
import URLSelector from '~/src/components/URLSelector'
+import ThemeSelector from '~/src/components/ThemeSelector'
import { buildPlayLinkHref } from '~/src/utils/utils.routing'
-export default function () {
- const [targetName, setTargetName] = useState(null)
- const [targetURL, setTargetURL] = useState(null)
+const playButton = (name, url, theme) => (
+
+ Play "{name}"
+ )
- const playButton = (
-
- Play "{targetName}"
- )
+export default function ({ themeList, currentTheme, setTheme }) {
+ const [targetName, setTargetName] = useState(null)
+ const [targetUrl, setTargetUrl] = useState(null)
return (
@@ -26,16 +27,27 @@ export default function () {
- { targetURL ? playButton : null }
+ { targetUrl
+ ? playButton(targetName, targetUrl, currentTheme)
+ : null }
)
}
diff --git a/src/views/Player.jsx b/src/views/Player.jsx
index b5ec640..c678f8f 100644
--- a/src/views/Player.jsx
+++ b/src/views/Player.jsx
@@ -2,7 +2,9 @@ import { h } from 'preact'
import { getFileExtension } from '~/src/utils/utils.routing'
-export default function ({params: {theme, encodedUrl}}) {
+export default function ({setTheme, theme, encodedUrl}) {
+ setTheme(theme)
+
const url = decodeURIComponent(encodedUrl)
const type = getFileExtension(url)