home-atom 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +25 -0
- package/bin/home-atom.js +135 -0
- package/dist/client/.vite/manifest.json +184 -0
- package/dist/client/_next/static/chunks/app-top-nav-Dh0jEt8u.js +1 -0
- package/dist/client/_next/static/chunks/chevron-left-Dn3noAqV.js +1 -0
- package/dist/client/_next/static/chunks/framework-BQUlGUOV.js +9 -0
- package/dist/client/_next/static/chunks/hls-CgexCc5Z.js +40 -0
- package/dist/client/_next/static/chunks/house-DQz6VeTk.js +1 -0
- package/dist/client/_next/static/chunks/index-hn3AiVww.js +33 -0
- package/dist/client/_next/static/chunks/layout-segment-context-DRM8YCgm.js +1 -0
- package/dist/client/_next/static/chunks/manage-profiles-modal-Doi6QM4e.js +1 -0
- package/dist/client/_next/static/chunks/navigation-errors-C_V42-00.js +1 -0
- package/dist/client/_next/static/chunks/netflix-browser-L_Vb9wXK.js +2 -0
- package/dist/client/_next/static/chunks/playback-activity-Dug3BRYr.js +1 -0
- package/dist/client/_next/static/chunks/playback-activity-track-switcher-CbO6kl8K.js +1 -0
- package/dist/client/_next/static/chunks/rolldown-runtime-QTnfLwEv.js +1 -0
- package/dist/client/_next/static/chunks/spotify-app-f93K4FG_.js +1 -0
- package/dist/client/_next/static/chunks/step-forward-CV8I5pPb.js +1 -0
- package/dist/client/_next/static/chunks/storefront-C_nmcuvH.js +1 -0
- package/dist/client/_next/static/chunks/streamed-icons-DwsKSgMb.js +1 -0
- package/dist/client/_next/static/css/index.BGXy8e6j.css +1 -0
- package/dist/client/_next/static/css/layout.AKSLtSR6.css +1 -0
- package/dist/client/_next/static/css/layout.D8T68cCD.css +1 -0
- package/dist/client/_next/static/css/manage-profiles-modal.BAVyxRRR.css +1 -0
- package/dist/client/_next/static/e1ce9af7-d770-43d6-845a-511443f19971/_buildManifest.js +1 -0
- package/dist/client/_next/static/e1ce9af7-d770-43d6-845a-511443f19971/_ssgManifest.js +1 -0
- package/dist/client/_next/static/media/roboto-cyrillic-ext-wght-normal.BCp_3N7R.woff2 +0 -0
- package/dist/client/_next/static/media/roboto-cyrillic-wght-normal.fOt7epNf.woff2 +0 -0
- package/dist/client/_next/static/media/roboto-greek-ext-wght-normal.Bgw4czJT.woff2 +0 -0
- package/dist/client/_next/static/media/roboto-greek-wght-normal.DlT9XTxE.woff2 +0 -0
- package/dist/client/_next/static/media/roboto-latin-ext-wght-normal.DYIxWhlt.woff2 +0 -0
- package/dist/client/_next/static/media/roboto-latin-wght-normal.ccAYIvAh.woff2 +0 -0
- package/dist/client/_next/static/media/roboto-math-wght-normal.4a3xuzGk.woff2 +0 -0
- package/dist/client/_next/static/media/roboto-symbols-wght-normal.B7iHSfaG.woff2 +0 -0
- package/dist/client/_next/static/media/roboto-vietnamese-wght-normal._f1XEJpo.woff2 +0 -0
- package/dist/client/icons/home.ico +0 -0
- package/dist/client/icons/keyboard.ico +0 -0
- package/dist/client/icons/netflix.ico +0 -0
- package/dist/client/icons/remote-screen.ico +0 -0
- package/dist/client/icons/spotify.ico +0 -0
- package/dist/client/vinext-client-entry-manifest.json +3 -0
- package/dist/server/BUILD_ID +1 -0
- package/dist/server/__vite_rsc_assets_manifest.js +162 -0
- package/dist/server/_next/static/app-page-cache-DcrtN14Y.js +1 -0
- package/dist/server/_next/static/app-page-cache-render-DoCquoNb.js +1 -0
- package/dist/server/_next/static/app-prerender-endpoints-rDLH8gfm.js +1 -0
- package/dist/server/_next/static/app-route-handler-dispatch-Be2YIqVp.js +1 -0
- package/dist/server/_next/static/app-static-generation-BX8cz43B.js +1 -0
- package/dist/server/_next/static/app-top-nav-aGPkB57A.js +1 -0
- package/dist/server/_next/static/automation-UGP78ei5.js +172 -0
- package/dist/server/_next/static/automation-tAN_1u1H.js +118 -0
- package/dist/server/_next/static/base-path-Cmiu3HvG.js +1 -0
- package/dist/server/_next/static/cache-headers-BQ-QuzWN.js +1 -0
- package/dist/server/_next/static/catalog-BS93IoWO.js +1 -0
- package/dist/server/_next/static/css/index.BGXy8e6j.css +1 -0
- package/dist/server/_next/static/css/layout.AKSLtSR6.css +1 -0
- package/dist/server/_next/static/css/layout.D8T68cCD.css +1 -0
- package/dist/server/_next/static/database-BNnYfHmT.js +114 -0
- package/dist/server/_next/static/db-BE1J0NNS.js +98 -0
- package/dist/server/_next/static/downloader-DgnjNL5T.js +21 -0
- package/dist/server/_next/static/framework~index-B2E_Di_-.js +18 -0
- package/dist/server/_next/static/framework~index~layout~layout~page~page~page~layout~page~app-page-cache-render~app-page-cac~nvd6h53m-ydvR7YSg.js +1 -0
- package/dist/server/_next/static/http-B2HyuWoI.js +1 -0
- package/dist/server/_next/static/input-platform-C0756QEt.js +1 -0
- package/dist/server/_next/static/instrumentation-BV3gg-L-.js +1 -0
- package/dist/server/_next/static/isr-decision-D1zHgPSI.js +1 -0
- package/dist/server/_next/static/layout-ClEWbCcj.js +1 -0
- package/dist/server/_next/static/layout-Ds3pFa6r.js +1 -0
- package/dist/server/_next/static/media/roboto-cyrillic-ext-wght-normal.BCp_3N7R.woff2 +0 -0
- package/dist/server/_next/static/media/roboto-cyrillic-wght-normal.fOt7epNf.woff2 +0 -0
- package/dist/server/_next/static/media/roboto-greek-ext-wght-normal.Bgw4czJT.woff2 +0 -0
- package/dist/server/_next/static/media/roboto-greek-wght-normal.DlT9XTxE.woff2 +0 -0
- package/dist/server/_next/static/media/roboto-latin-ext-wght-normal.DYIxWhlt.woff2 +0 -0
- package/dist/server/_next/static/media/roboto-latin-wght-normal.ccAYIvAh.woff2 +0 -0
- package/dist/server/_next/static/media/roboto-math-wght-normal.4a3xuzGk.woff2 +0 -0
- package/dist/server/_next/static/media/roboto-symbols-wght-normal.B7iHSfaG.woff2 +0 -0
- package/dist/server/_next/static/media/roboto-vietnamese-wght-normal._f1XEJpo.woff2 +0 -0
- package/dist/server/_next/static/netflix-page-BRbORN1F.js +1 -0
- package/dist/server/_next/static/page-C457kN_n.js +1 -0
- package/dist/server/_next/static/page-Cs-erYTy.js +1 -0
- package/dist/server/_next/static/page-DlBGATQp.js +1 -0
- package/dist/server/_next/static/page-DlRXyzSQ.js +1 -0
- package/dist/server/_next/static/providers-B3YELr_F.js +108 -0
- package/dist/server/_next/static/providers-CMBIwNGs.js +1 -0
- package/dist/server/_next/static/request-context-C1ZJzkex.js +1 -0
- package/dist/server/_next/static/request-profile-B1yGQ0l6.js +1 -0
- package/dist/server/_next/static/rolldown-runtime-DaDcL9Zw.js +1 -0
- package/dist/server/_next/static/route-96DdgJBs.js +1 -0
- package/dist/server/_next/static/route-B0WNLJZp.js +1 -0
- package/dist/server/_next/static/route-BBmE0xf12.js +1 -0
- package/dist/server/_next/static/route-BPcAdbz_.js +1 -0
- package/dist/server/_next/static/route-BWk9YK7r.js +1 -0
- package/dist/server/_next/static/route-BdG5ojMj2.js +1 -0
- package/dist/server/_next/static/route-BovNctFc.js +1 -0
- package/dist/server/_next/static/route-C2LuSjoh.js +1 -0
- package/dist/server/_next/static/route-C74RA7va.js +1 -0
- package/dist/server/_next/static/route-CCUsQ7AG.js +1 -0
- package/dist/server/_next/static/route-CHJzaQu2.js +73 -0
- package/dist/server/_next/static/route-CN6VdJwN.js +1 -0
- package/dist/server/_next/static/route-CNNiXZoM2.js +1 -0
- package/dist/server/_next/static/route-CVPPmUto.js +1 -0
- package/dist/server/_next/static/route-CeVsDcbj2.js +1 -0
- package/dist/server/_next/static/route-Cim7D4XQ.js +1 -0
- package/dist/server/_next/static/route-CjUCKwSj2.js +1 -0
- package/dist/server/_next/static/route-CkH7Cg-p.js +1 -0
- package/dist/server/_next/static/route-Cn40NftM.js +1 -0
- package/dist/server/_next/static/route-DAyF4BHS.js +1 -0
- package/dist/server/_next/static/route-DWAMZHLa.js +1 -0
- package/dist/server/_next/static/route-DXTJyFWD.js +1 -0
- package/dist/server/_next/static/route-D_G2SOlz.js +1 -0
- package/dist/server/_next/static/route-Dbs39TkC.js +1 -0
- package/dist/server/_next/static/route-DiT9UYUd.js +1 -0
- package/dist/server/_next/static/route-DslPFTAK.js +1 -0
- package/dist/server/_next/static/route-UWQN8uYr.js +1 -0
- package/dist/server/_next/static/route-ipFkK3iA.js +1 -0
- package/dist/server/_next/static/route-jMq6H_yh.js +1 -0
- package/dist/server/_next/static/route-mzLdjDCs2.js +1 -0
- package/dist/server/_next/static/route-vD15s2A8.js +1 -0
- package/dist/server/_next/static/route-xtz48fti.js +1 -0
- package/dist/server/_next/static/route-zazqen-A2.js +1 -0
- package/dist/server/_next/static/seed-cache-oCd9Lfdw.js +1 -0
- package/dist/server/_next/static/server-CS40XqUP.js +1 -0
- package/dist/server/_next/static/storage-D1zF0J_t.js +288 -0
- package/dist/server/_next/static/streamer-B1PRR-dj.js +2 -0
- package/dist/server/_next/static/subtitles-DYBlMnha.js +2 -0
- package/dist/server/_next/static/title-progress-CQBrSxvN.js +1 -0
- package/dist/server/_next/static/unified-request-context-CgIMz2dD.js +1 -0
- package/dist/server/index.js +17 -0
- package/dist/server/prerendered-routes/404.html +2 -0
- package/dist/server/prerendered-routes/index.html +2 -0
- package/dist/server/prerendered-routes/index.rsc +13 -0
- package/dist/server/ssr/__vite_rsc_assets_manifest.js +162 -0
- package/dist/server/ssr/_next/static/app-elements-Psr6bSdJ.js +1 -0
- package/dist/server/ssr/_next/static/app-prefetch-fetch-queue-Dm_lGOGz.js +1 -0
- package/dist/server/ssr/_next/static/app-router-context-QPmikWPX.js +1 -0
- package/dist/server/ssr/_next/static/app-router-scroll-C0MNOLz-.js +1 -0
- package/dist/server/ssr/_next/static/app-top-nav-a5vUAoEs.js +1 -0
- package/dist/server/ssr/_next/static/base-path-DtcGyvwb.js +1 -0
- package/dist/server/ssr/_next/static/chevron-left-CkBJG8E2.js +1 -0
- package/dist/server/ssr/_next/static/css/refresh-cw.BAVyxRRR.css +1 -0
- package/dist/server/ssr/_next/static/default-global-error-B62cHCkh.js +31 -0
- package/dist/server/ssr/_next/static/error-boundary-C28whqLB.js +1 -0
- package/dist/server/ssr/_next/static/hls-CgexCc5Z.js +40 -0
- package/dist/server/ssr/_next/static/house-l1u9dUbj.js +1 -0
- package/dist/server/ssr/_next/static/layout-segment-context-DK0O-NeY.js +1 -0
- package/dist/server/ssr/_next/static/minimize-C9JLgte-.js +1 -0
- package/dist/server/ssr/_next/static/navigation-BCDRWdBm.js +1 -0
- package/dist/server/ssr/_next/static/navigation-context-state-BnWorqxb.js +1 -0
- package/dist/server/ssr/_next/static/navigation-errors-BRIEcp79.js +1 -0
- package/dist/server/ssr/_next/static/navigation-server-CCLiCOcy.js +1 -0
- package/dist/server/ssr/_next/static/netflix-browser-CMAehdwi.js +2 -0
- package/dist/server/ssr/_next/static/pin-BQre-tQY.js +1 -0
- package/dist/server/ssr/_next/static/playback-activity-D5TYX2Ae.js +1 -0
- package/dist/server/ssr/_next/static/refresh-cw-CWdWHjqY.js +1 -0
- package/dist/server/ssr/_next/static/rolldown-runtime-DSjMdhoD.js +1 -0
- package/dist/server/ssr/_next/static/slot-CE_M6qTT.js +1 -0
- package/dist/server/ssr/_next/static/spotify-app-CE-RaTjZ.js +1 -0
- package/dist/server/ssr/_next/static/storefront-C5NNzPMa.js +1 -0
- package/dist/server/ssr/_next/static/streamed-icons-D2p1hUS_.js +1 -0
- package/dist/server/ssr/_next/static/url-safety-CnwxMXYX.js +1 -0
- package/dist/server/ssr/index.js +3 -0
- package/dist/server/ssr/vinext-client-assets.js +1 -0
- package/dist/server/ssr/vinext-server.json +1 -0
- package/dist/server/vinext-client-assets.js +1 -0
- package/dist/server/vinext-externals.json +5 -0
- package/dist/server/vinext-prerender-paths.json +7 -0
- package/dist/server/vinext-prerender.json +219 -0
- package/dist/server/vinext-server.json +1 -0
- package/package.json +66 -0
package/README.md
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Home Atom
|
|
2
|
+
|
|
3
|
+
Home Atom is a self-hosted home entertainment dashboard.
|
|
4
|
+
|
|
5
|
+
## Run
|
|
6
|
+
|
|
7
|
+
Node.js 20.19 or newer is required.
|
|
8
|
+
|
|
9
|
+
```sh
|
|
10
|
+
npm exec -y home-atom
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
The server starts at <http://localhost:5567>. To use another port or bind
|
|
14
|
+
address:
|
|
15
|
+
|
|
16
|
+
```sh
|
|
17
|
+
npm exec -y home-atom -- --port 3000 --hostname 127.0.0.1
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
`PORT` and `HOST` are also supported.
|
|
21
|
+
|
|
22
|
+
Home Atom stores profiles and downloaded media in `./data` by default, relative
|
|
23
|
+
to the directory where the command is run. See
|
|
24
|
+
[`docs/profile-storage.md`](docs/profile-storage.md) in the repository for the
|
|
25
|
+
available data-directory environment variables and migration behavior.
|
package/bin/home-atom.js
ADDED
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import process from "node:process";
|
|
5
|
+
import { fileURLToPath } from "node:url";
|
|
6
|
+
|
|
7
|
+
const DEFAULT_PORT = 5567;
|
|
8
|
+
const DEFAULT_HOSTNAME = "0.0.0.0";
|
|
9
|
+
|
|
10
|
+
function fail(message) {
|
|
11
|
+
console.error(`home-atom: ${message}`);
|
|
12
|
+
console.error("Run `home-atom --help` for usage.");
|
|
13
|
+
process.exitCode = 1;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
function valueAfter(args, index, option) {
|
|
17
|
+
const value = args[index + 1];
|
|
18
|
+
|
|
19
|
+
if (!value || value.startsWith("-")) {
|
|
20
|
+
throw new Error(`${option} requires a value`);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
return value;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
function parseArgs(args) {
|
|
27
|
+
let port = process.env.PORT || String(DEFAULT_PORT);
|
|
28
|
+
let hostname = process.env.HOST || DEFAULT_HOSTNAME;
|
|
29
|
+
|
|
30
|
+
for (let index = 0; index < args.length; index += 1) {
|
|
31
|
+
const arg = args[index];
|
|
32
|
+
|
|
33
|
+
if (arg === "-h" || arg === "--help") {
|
|
34
|
+
return { help: true };
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
if (arg === "-p" || arg === "--port") {
|
|
38
|
+
port = valueAfter(args, index, arg);
|
|
39
|
+
index += 1;
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
if (arg.startsWith("--port=")) {
|
|
44
|
+
port = arg.slice("--port=".length);
|
|
45
|
+
continue;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
if (arg === "-H" || arg === "--hostname") {
|
|
49
|
+
hostname = valueAfter(args, index, arg);
|
|
50
|
+
index += 1;
|
|
51
|
+
continue;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
if (arg.startsWith("--hostname=")) {
|
|
55
|
+
hostname = arg.slice("--hostname=".length);
|
|
56
|
+
continue;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
throw new Error(`unknown option: ${arg}`);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
const parsedPort = Number(port);
|
|
63
|
+
|
|
64
|
+
if (!Number.isInteger(parsedPort) || parsedPort < 1 || parsedPort > 65535) {
|
|
65
|
+
throw new Error(`port must be an integer between 1 and 65535 (received ${port})`);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
if (!hostname.trim()) {
|
|
69
|
+
throw new Error("hostname cannot be empty");
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
return { help: false, hostname: hostname.trim(), port: parsedPort };
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
function printHelp() {
|
|
76
|
+
console.log(`
|
|
77
|
+
Home Atom
|
|
78
|
+
|
|
79
|
+
Usage:
|
|
80
|
+
home-atom [options]
|
|
81
|
+
|
|
82
|
+
Options:
|
|
83
|
+
-p, --port <port> Port to listen on (default: ${DEFAULT_PORT}, or PORT)
|
|
84
|
+
-H, --hostname <hostname> Interface to bind to (default: ${DEFAULT_HOSTNAME}, or HOST)
|
|
85
|
+
-h, --help Show this help
|
|
86
|
+
|
|
87
|
+
Home Atom stores its data in ./data by default. Run it from the directory where
|
|
88
|
+
you want that data to live, or use the HOME_ATOM_* data directory variables.
|
|
89
|
+
`.trim());
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
let options;
|
|
93
|
+
|
|
94
|
+
try {
|
|
95
|
+
options = parseArgs(process.argv.slice(2));
|
|
96
|
+
} catch (error) {
|
|
97
|
+
fail(error instanceof Error ? error.message : String(error));
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
if (options?.help) {
|
|
101
|
+
printHelp();
|
|
102
|
+
} else if (options) {
|
|
103
|
+
const packageRoot = path.dirname(
|
|
104
|
+
path.dirname(fileURLToPath(import.meta.url)),
|
|
105
|
+
);
|
|
106
|
+
const displayHostname =
|
|
107
|
+
options.hostname === "0.0.0.0" || options.hostname === "::"
|
|
108
|
+
? "localhost"
|
|
109
|
+
: options.hostname;
|
|
110
|
+
|
|
111
|
+
process.env.NODE_ENV = "production";
|
|
112
|
+
process.env.PORT = String(options.port);
|
|
113
|
+
|
|
114
|
+
// Import vinext only after NODE_ENV is set: a hoisted static import would
|
|
115
|
+
// load React's development build and mismatch the production SSR renderer.
|
|
116
|
+
const { startProdServer } = await import("vinext/server/prod-server");
|
|
117
|
+
|
|
118
|
+
console.log(`Home Atom is starting at http://${displayHostname}:${options.port}`);
|
|
119
|
+
const hasConfiguredDataDirectory = Object.keys(process.env).some((name) =>
|
|
120
|
+
(name.startsWith("HOME_ATOM_") && name.endsWith("_DIR")) ||
|
|
121
|
+
name === "HOME_ATOM_PROFILE_DATA_ROOT"
|
|
122
|
+
);
|
|
123
|
+
|
|
124
|
+
console.log(
|
|
125
|
+
hasConfiguredDataDirectory
|
|
126
|
+
? "Data directories: configured by HOME_ATOM_* environment variables"
|
|
127
|
+
: `Data directory: ${path.resolve(process.cwd(), "data")}`,
|
|
128
|
+
);
|
|
129
|
+
|
|
130
|
+
await startProdServer({
|
|
131
|
+
host: options.hostname,
|
|
132
|
+
outDir: path.join(packageRoot, "dist"),
|
|
133
|
+
port: options.port,
|
|
134
|
+
});
|
|
135
|
+
}
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
{
|
|
2
|
+
"_chevron-left-Dn3noAqV.js": {
|
|
3
|
+
"file": "_next/static/chunks/chevron-left-Dn3noAqV.js",
|
|
4
|
+
"name": "chevron-left",
|
|
5
|
+
"imports": [
|
|
6
|
+
"_rolldown-runtime-QTnfLwEv.js",
|
|
7
|
+
"_framework-BQUlGUOV.js"
|
|
8
|
+
]
|
|
9
|
+
},
|
|
10
|
+
"_framework-BQUlGUOV.js": {
|
|
11
|
+
"file": "_next/static/chunks/framework-BQUlGUOV.js",
|
|
12
|
+
"name": "framework",
|
|
13
|
+
"imports": [
|
|
14
|
+
"_rolldown-runtime-QTnfLwEv.js"
|
|
15
|
+
]
|
|
16
|
+
},
|
|
17
|
+
"_house-DQz6VeTk.js": {
|
|
18
|
+
"file": "_next/static/chunks/house-DQz6VeTk.js",
|
|
19
|
+
"name": "house",
|
|
20
|
+
"imports": [
|
|
21
|
+
"_chevron-left-Dn3noAqV.js"
|
|
22
|
+
]
|
|
23
|
+
},
|
|
24
|
+
"_manage-profiles-modal-Doi6QM4e.js": {
|
|
25
|
+
"file": "_next/static/chunks/manage-profiles-modal-Doi6QM4e.js",
|
|
26
|
+
"name": "manage-profiles-modal",
|
|
27
|
+
"imports": [
|
|
28
|
+
"_rolldown-runtime-QTnfLwEv.js",
|
|
29
|
+
"_framework-BQUlGUOV.js",
|
|
30
|
+
"_chevron-left-Dn3noAqV.js"
|
|
31
|
+
],
|
|
32
|
+
"css": [
|
|
33
|
+
"_next/static/css/manage-profiles-modal.BAVyxRRR.css"
|
|
34
|
+
]
|
|
35
|
+
},
|
|
36
|
+
"_manage-profiles-modal.BAVyxRRR.css": {
|
|
37
|
+
"file": "_next/static/css/manage-profiles-modal.BAVyxRRR.css",
|
|
38
|
+
"src": "_manage-profiles-modal.BAVyxRRR.css"
|
|
39
|
+
},
|
|
40
|
+
"_navigation-errors-C_V42-00.js": {
|
|
41
|
+
"file": "_next/static/chunks/navigation-errors-C_V42-00.js",
|
|
42
|
+
"name": "navigation-errors",
|
|
43
|
+
"imports": [
|
|
44
|
+
"_rolldown-runtime-QTnfLwEv.js",
|
|
45
|
+
"_framework-BQUlGUOV.js"
|
|
46
|
+
]
|
|
47
|
+
},
|
|
48
|
+
"_playback-activity-Dug3BRYr.js": {
|
|
49
|
+
"file": "_next/static/chunks/playback-activity-Dug3BRYr.js",
|
|
50
|
+
"name": "playback-activity",
|
|
51
|
+
"imports": [
|
|
52
|
+
"_chevron-left-Dn3noAqV.js"
|
|
53
|
+
]
|
|
54
|
+
},
|
|
55
|
+
"_playback-activity-track-switcher-CbO6kl8K.js": {
|
|
56
|
+
"file": "_next/static/chunks/playback-activity-track-switcher-CbO6kl8K.js",
|
|
57
|
+
"name": "playback-activity-track-switcher",
|
|
58
|
+
"imports": [
|
|
59
|
+
"_rolldown-runtime-QTnfLwEv.js",
|
|
60
|
+
"_framework-BQUlGUOV.js",
|
|
61
|
+
"_chevron-left-Dn3noAqV.js",
|
|
62
|
+
"_manage-profiles-modal-Doi6QM4e.js"
|
|
63
|
+
]
|
|
64
|
+
},
|
|
65
|
+
"_rolldown-runtime-QTnfLwEv.js": {
|
|
66
|
+
"file": "_next/static/chunks/rolldown-runtime-QTnfLwEv.js",
|
|
67
|
+
"name": "rolldown-runtime"
|
|
68
|
+
},
|
|
69
|
+
"_step-forward-CV8I5pPb.js": {
|
|
70
|
+
"file": "_next/static/chunks/step-forward-CV8I5pPb.js",
|
|
71
|
+
"name": "step-forward",
|
|
72
|
+
"imports": [
|
|
73
|
+
"_chevron-left-Dn3noAqV.js"
|
|
74
|
+
]
|
|
75
|
+
},
|
|
76
|
+
"app/app-top-nav.tsx": {
|
|
77
|
+
"file": "_next/static/chunks/app-top-nav-Dh0jEt8u.js",
|
|
78
|
+
"name": "app-top-nav",
|
|
79
|
+
"src": "app/app-top-nav.tsx",
|
|
80
|
+
"isDynamicEntry": true,
|
|
81
|
+
"imports": [
|
|
82
|
+
"_framework-BQUlGUOV.js",
|
|
83
|
+
"virtual:vinext-app-browser-entry",
|
|
84
|
+
"_chevron-left-Dn3noAqV.js",
|
|
85
|
+
"_house-DQz6VeTk.js"
|
|
86
|
+
]
|
|
87
|
+
},
|
|
88
|
+
"app/storefront.tsx": {
|
|
89
|
+
"file": "_next/static/chunks/storefront-C_nmcuvH.js",
|
|
90
|
+
"name": "storefront",
|
|
91
|
+
"src": "app/storefront.tsx",
|
|
92
|
+
"isDynamicEntry": true,
|
|
93
|
+
"imports": [
|
|
94
|
+
"_rolldown-runtime-QTnfLwEv.js",
|
|
95
|
+
"_framework-BQUlGUOV.js",
|
|
96
|
+
"virtual:vinext-app-browser-entry",
|
|
97
|
+
"_chevron-left-Dn3noAqV.js",
|
|
98
|
+
"_step-forward-CV8I5pPb.js",
|
|
99
|
+
"_playback-activity-track-switcher-CbO6kl8K.js",
|
|
100
|
+
"_manage-profiles-modal-Doi6QM4e.js"
|
|
101
|
+
]
|
|
102
|
+
},
|
|
103
|
+
"features/netflix/netflix-browser.tsx": {
|
|
104
|
+
"file": "_next/static/chunks/netflix-browser-L_Vb9wXK.js",
|
|
105
|
+
"name": "netflix-browser",
|
|
106
|
+
"src": "features/netflix/netflix-browser.tsx",
|
|
107
|
+
"isDynamicEntry": true,
|
|
108
|
+
"imports": [
|
|
109
|
+
"_rolldown-runtime-QTnfLwEv.js",
|
|
110
|
+
"_framework-BQUlGUOV.js",
|
|
111
|
+
"virtual:vinext-app-browser-entry",
|
|
112
|
+
"_chevron-left-Dn3noAqV.js",
|
|
113
|
+
"_step-forward-CV8I5pPb.js",
|
|
114
|
+
"_playback-activity-Dug3BRYr.js",
|
|
115
|
+
"_manage-profiles-modal-Doi6QM4e.js"
|
|
116
|
+
],
|
|
117
|
+
"dynamicImports": [
|
|
118
|
+
"node_modules/hls.js/dist/hls.mjs"
|
|
119
|
+
]
|
|
120
|
+
},
|
|
121
|
+
"features/spotify/spotify-app.tsx": {
|
|
122
|
+
"file": "_next/static/chunks/spotify-app-f93K4FG_.js",
|
|
123
|
+
"name": "spotify-app",
|
|
124
|
+
"src": "features/spotify/spotify-app.tsx",
|
|
125
|
+
"isDynamicEntry": true,
|
|
126
|
+
"imports": [
|
|
127
|
+
"_rolldown-runtime-QTnfLwEv.js",
|
|
128
|
+
"_framework-BQUlGUOV.js",
|
|
129
|
+
"_chevron-left-Dn3noAqV.js",
|
|
130
|
+
"_playback-activity-track-switcher-CbO6kl8K.js",
|
|
131
|
+
"_playback-activity-Dug3BRYr.js",
|
|
132
|
+
"_manage-profiles-modal-Doi6QM4e.js",
|
|
133
|
+
"_house-DQz6VeTk.js"
|
|
134
|
+
]
|
|
135
|
+
},
|
|
136
|
+
"node_modules/hls.js/dist/hls.mjs": {
|
|
137
|
+
"file": "_next/static/chunks/hls-CgexCc5Z.js",
|
|
138
|
+
"name": "hls",
|
|
139
|
+
"src": "node_modules/hls.js/dist/hls.mjs",
|
|
140
|
+
"isDynamicEntry": true
|
|
141
|
+
},
|
|
142
|
+
"node_modules/vinext/dist/shims/layout-segment-context.js": {
|
|
143
|
+
"file": "_next/static/chunks/layout-segment-context-DRM8YCgm.js",
|
|
144
|
+
"name": "layout-segment-context",
|
|
145
|
+
"src": "node_modules/vinext/dist/shims/layout-segment-context.js",
|
|
146
|
+
"isDynamicEntry": true,
|
|
147
|
+
"imports": [
|
|
148
|
+
"_rolldown-runtime-QTnfLwEv.js",
|
|
149
|
+
"_framework-BQUlGUOV.js",
|
|
150
|
+
"_navigation-errors-C_V42-00.js",
|
|
151
|
+
"virtual:vinext-app-browser-entry"
|
|
152
|
+
]
|
|
153
|
+
},
|
|
154
|
+
"node_modules/vinext/dist/shims/streamed-icons.js": {
|
|
155
|
+
"file": "_next/static/chunks/streamed-icons-DwsKSgMb.js",
|
|
156
|
+
"name": "streamed-icons",
|
|
157
|
+
"src": "node_modules/vinext/dist/shims/streamed-icons.js",
|
|
158
|
+
"isDynamicEntry": true,
|
|
159
|
+
"imports": [
|
|
160
|
+
"_rolldown-runtime-QTnfLwEv.js",
|
|
161
|
+
"_framework-BQUlGUOV.js"
|
|
162
|
+
]
|
|
163
|
+
},
|
|
164
|
+
"virtual:vinext-app-browser-entry": {
|
|
165
|
+
"file": "_next/static/chunks/index-hn3AiVww.js",
|
|
166
|
+
"name": "index",
|
|
167
|
+
"src": "virtual:vinext-app-browser-entry",
|
|
168
|
+
"isEntry": true,
|
|
169
|
+
"imports": [
|
|
170
|
+
"_rolldown-runtime-QTnfLwEv.js",
|
|
171
|
+
"_framework-BQUlGUOV.js",
|
|
172
|
+
"_navigation-errors-C_V42-00.js"
|
|
173
|
+
],
|
|
174
|
+
"dynamicImports": [
|
|
175
|
+
"virtual:vinext-app-browser-entry",
|
|
176
|
+
"node_modules/vinext/dist/shims/layout-segment-context.js",
|
|
177
|
+
"features/netflix/netflix-browser.tsx",
|
|
178
|
+
"features/spotify/spotify-app.tsx",
|
|
179
|
+
"node_modules/vinext/dist/shims/streamed-icons.js",
|
|
180
|
+
"app/app-top-nav.tsx",
|
|
181
|
+
"app/storefront.tsx"
|
|
182
|
+
]
|
|
183
|
+
}
|
|
184
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{i as e}from"./framework-BQUlGUOV.js";import{t}from"./index-hn3AiVww.js";import{t as n}from"./chevron-left-Dn3noAqV.js";import{t as r}from"./house-DQz6VeTk.js";var i=e(),a={netflix:`Netflix`,spotify:`Spotify`};function o(){let e=t().split(`/`).filter(Boolean)[0]??``,o=a[e]??e;return(0,i.jsxs)(`nav`,{className:`app-top-nav`,"aria-label":`App navigation`,children:[(0,i.jsxs)(`a`,{className:`app-top-nav__home`,href:`/`,children:[(0,i.jsx)(n,{size:16,strokeWidth:2.5}),(0,i.jsx)(r,{size:14,strokeWidth:2.2}),(0,i.jsx)(`span`,{children:`Home`})]}),(0,i.jsx)(`span`,{className:`app-top-nav__separator`,"aria-hidden":`true`,children:`/`}),(0,i.jsx)(`span`,{className:`app-top-nav__app`,children:o})]})}export{o as AppTopNav};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{r as t}from"./framework-BQUlGUOV.js";var n=e(t(),1),r=(...e)=>e.filter((e,t,n)=>!!e&&e.trim()!==``&&n.indexOf(e)===t).join(` `).trim(),i=e=>e.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).toLowerCase(),a=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,n)=>n?n.toUpperCase():t.toLowerCase()),o=e=>{let t=a(e);return t.charAt(0).toUpperCase()+t.slice(1)},s={xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:2,strokeLinecap:`round`,strokeLinejoin:`round`},c=e=>{for(let t in e)if(t.startsWith(`aria-`)||t===`role`||t===`title`)return!0;return!1},l=(0,n.createContext)({}),u=()=>(0,n.useContext)(l),d=(0,n.forwardRef)(({color:e,size:t,strokeWidth:i,absoluteStrokeWidth:a,className:o=``,children:l,iconNode:d,...f},p)=>{let{size:m=24,strokeWidth:h=2,absoluteStrokeWidth:g=!1,color:_=`currentColor`,className:v=``}=u()??{},y=a??g?Number(i??h)*24/Number(t??m):i??h;return(0,n.createElement)(`svg`,{ref:p,...s,width:t??m??s.width,height:t??m??s.height,stroke:e??_,strokeWidth:y,className:r(`lucide`,v,o),...!l&&!c(f)&&{"aria-hidden":`true`},...f},[...d.map(([e,t])=>(0,n.createElement)(e,t)),...Array.isArray(l)?l:[l]])}),f=(e,t)=>{let a=(0,n.forwardRef)(({className:a,...s},c)=>(0,n.createElement)(d,{ref:c,iconNode:t,className:r(`lucide-${i(o(e))}`,`lucide-${e}`,a),...s}));return a.displayName=o(e),a},p=f(`chevron-left`,[[`path`,{d:`m15 18-6-6 6-6`,key:`1wnfg3`}]]);export{f as n,p as t};
|