diff --git a/src/_data/facets.json b/src/_data/facets.json index c1251b06..417fde92 100644 --- a/src/_data/facets.json +++ b/src/_data/facets.json @@ -29,45 +29,47 @@ "featured": true, "desc": "Store tracks locally for offline usage automatically after they've been playing for a little while." }, + { + "url": "facets/connect/index.html", + "title": "Connect", + "category": "Data", + "featured": true, + "desc": "A listing of some of the options available to use as an audio source, or as a user-data storage method." + }, { "url": "facets/connect/atproto/index.html", "title": "Connect / AT Protocol", "category": "Data", - "featured": true, "desc": "Use your AT Protocol identity for user-data storage." }, { "url": "facets/connect/https/index.html", "title": "Connect / HTTPS", "category": "Data", - "desc": "Add HTTPS URLs as input." + "desc": "Add HTTPS URLs as audio sources." }, { "url": "facets/connect/icecast/index.html", "title": "Connect / Icecast", "category": "Data", - "featured": true, - "desc": "Add an Icecast stream as audio input." + "desc": "Add an Icecast stream as an audio source." }, { "url": "facets/connect/local/index.html", "title": "Connect / Local", "category": "Data", - "featured": true, - "desc": "Add local directories or files as audio input." + "desc": "Add local directories or files as audio sources." }, { "url": "facets/connect/opensubsonic/index.html", "title": "Connect / OpenSubsonic", "category": "Data", - "featured": true, "desc": "Connect to an OpenSubsonic server for audio input." }, { "url": "facets/connect/s3/index.html", "title": "Connect / S3", "category": "Data", - "featured": true, "desc": "Connect to an S3-compatible storage for audio input or user-data storage." }, { diff --git a/src/facets/connect/common.css b/src/facets/connect/common.css index a72504fd..4cda4891 100644 --- a/src/facets/connect/common.css +++ b/src/facets/connect/common.css @@ -4,6 +4,7 @@ main { justify-content: center; min-height: 100dvh; opacity: 0; + padding: var(--wa-space-m); pointer-events: none; transition: opacity 750ms; diff --git a/src/facets/connect/https/index.inline.js b/src/facets/connect/https/index.inline.js index 0df47b6d..46517a06 100644 --- a/src/facets/connect/https/index.inline.js +++ b/src/facets/connect/https/index.inline.js @@ -43,7 +43,7 @@ const { setItems, setError } = setup({ hasOutput: false, description: html` -

Add HTTPS urls as input.

+

Add HTTPS urls as audio sources.

`, formFields: html` diff --git a/src/facets/connect/index.html b/src/facets/connect/index.html new file mode 100644 index 00000000..dc302fda --- /dev/null +++ b/src/facets/connect/index.html @@ -0,0 +1,32 @@ + + +
+ + + + diff --git a/src/facets/connect/index.inline.js b/src/facets/connect/index.inline.js new file mode 100644 index 00000000..b38d6e31 --- /dev/null +++ b/src/facets/connect/index.inline.js @@ -0,0 +1,80 @@ +import { html, render as litRender } from "lit-html"; + +import "@awesome.me/webawesome/dist/components/card/card.js"; +import "@awesome.me/webawesome/dist/components/divider/divider.js"; +import "@awesome.me/webawesome/dist/components/icon/icon.js"; + +import "~/common/webawesome/detect-dark.js"; +import "~/common/webawesome/phosphor/fill.js"; + +import { data as facetsData } from "~/facets/index.js"; + +document.title = "Connect | Diffuse"; + +/** @param {string} path */ +const loaderHref = (path) => `../../l/?path=${encodeURIComponent(path)}`; + +/** @type {Record} */ +const icons = { + "facets/connect/atproto/index.html": "at", + "facets/connect/https/index.html": "globe", + "facets/connect/icecast/index.html": "radio", + "facets/connect/local/index.html": "folder-open", + "facets/connect/opensubsonic/index.html": "broadcast", + "facets/connect/s3/index.html": "hard-drives", +}; + +const facets = facetsData + .filter( + (f) => + f.url.startsWith("facets/connect/") && + f.url !== "facets/connect/index.html", + ) + .map((f) => ({ + name: f.title.replace(/^Connect \/ /, ""), + description: f.desc, + icon: icons[f.url] ?? "plug", + href: loaderHref(f.url), + })); + +const main = document.querySelector("main"); +if (!main) throw new Error("No
element"); + +litRender( + html` + +
+ Connect +
+
+

+ These are some of the options available to add as an audio source, or to + use as user-data storage. Some offer both, the remainder offers only one + or the other. +

+ + +
+
+ `, + main, +); diff --git a/src/facets/index.js b/src/facets/index.js new file mode 100644 index 00000000..de4abee4 --- /dev/null +++ b/src/facets/index.js @@ -0,0 +1,3 @@ +import data from "~/_data/facets.json" with { type: "json" }; + +export { data };