diff --git a/Cargo.lock b/Cargo.lock
index f98c591e9..53e97328a 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -3161,7 +3161,7 @@ dependencies = [
[[package]]
name = "hyperdrive"
-version = "1.2.0"
+version = "1.2.1"
dependencies = [
"aes-gcm",
"alloy",
@@ -3217,7 +3217,7 @@ dependencies = [
[[package]]
name = "hyperdrive_lib"
-version = "1.2.0"
+version = "1.2.1"
dependencies = [
"lib",
]
@@ -3755,7 +3755,7 @@ checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67"
[[package]]
name = "lib"
-version = "1.2.0"
+version = "1.2.1"
dependencies = [
"alloy",
"anyhow",
diff --git a/Cargo.toml b/Cargo.toml
index 8627412ca..24c920479 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -1,7 +1,7 @@
[package]
name = "hyperdrive_lib"
authors = ["Sybil Technologies AG"]
-version = "1.2.0"
+version = "1.2.1"
edition = "2021"
description = "A general-purpose sovereign cloud computing platform"
homepage = "https://hyperware.ai"
diff --git a/README.md b/README.md
index ca2849329..6b3e879d0 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,5 @@
-
+
diff --git a/css/hyperware.css b/css/hyperware.css
index cd1000658..8583cff4d 100644
--- a/css/hyperware.css
+++ b/css/hyperware.css
@@ -12,11 +12,11 @@
--stone: #353534;
--black: #111111;
--black-light: #11111188;
- --black-xlight: #11111144;
+ --black-xlight: #11111111;
--tasteful-dark: var(--black);
--white: #f6f6f6;
--white-light: #f6f6f688;
- --white-xlight: #f6f6f644;
+ --white-xlight: #f6f6f611;
--magenta: #bf1363;
--orange: #dd6e42;
--off-white: var(--white);
@@ -27,9 +27,13 @@
--primary-light: var(--neon-green-light);
--primary-xlight: var(--neon-green-xlight);
--secondary-color: var(--iris);
+ --secondary-light: var(--iris-light);
+ --secondary-xlight: var(--iris-xlight);
--tertiary-color: var(--orange);
--quaternary-color: var(--magenta);
+ --link-color: light-dark(var(--secondary-color), var(--primary-color));
+
--font-family-main: 'Space Grotesk', monospace;
/* Add modern CSS variables */
@@ -44,6 +48,22 @@
--button-border-width: 2px;
}
+.bg-secondary {
+ background-color: var(--secondary-color);
+}
+
+.bg-primary {
+ background-color: var(--primary-color);
+}
+
+.text-secondary {
+ color: var(--secondary-color);
+}
+
+.text-primary {
+ color: var(--primary-color);
+}
+
* {
box-sizing: border-box;
margin: 0;
@@ -58,7 +78,6 @@
html {
font-size: 16px;
-
background-color: light-dark(var(--white), var(--black));
color: light-dark(var(--off-black), var(--off-white));
}
@@ -79,7 +98,7 @@ body {
a {
text-decoration: none;
- color: var(--primary-color);
+ color: var(--link-color);
}
form {
@@ -190,7 +209,13 @@ button.secondary,
.button.secondary {
background-color: var(--iris);
color: var(--white);
- transition: all 0.1s ease-in-out;
+}
+
+button.secondary:hover,
+.button.secondary:hover {
+ background-color: light-dark(var(--white), var(--black));
+ color: var(--iris);
+ border-color: var(--iris);
}
button.tertiary,
@@ -198,6 +223,13 @@ button.tertiary,
background-color: var(--orange);
}
+button.tertiary:hover,
+.button.tertiary:hover {
+ background-color: light-dark(var(--white), var(--black));
+ color: var(--orange);
+ border-color: var(--orange);
+}
+
button.thin,
.button.thin {
font-weight: normal;
@@ -212,8 +244,8 @@ button.icon,
background-color: transparent;
padding: 0.5rem;
border-radius: 999px;
- border: 2px solid var(--white-xlight);
- color: var(--white);
+ border: light-dark(2px solid var(--black-xlight), 2px solid var(--white-xlight));
+ color: light-dark(var(--black), var(--white));
}
button.icon:hover,
@@ -570,4 +602,4 @@ td:nth-child(even) {
[id$="-page"] {
align-items: center;
justify-content: center;
-}
+}
\ No newline at end of file
diff --git a/hyperdrive/Cargo.toml b/hyperdrive/Cargo.toml
index 28ed21e5e..94a6877df 100644
--- a/hyperdrive/Cargo.toml
+++ b/hyperdrive/Cargo.toml
@@ -1,7 +1,7 @@
[package]
name = "hyperdrive"
authors = ["Sybil Technologies AG"]
-version = "1.2.0"
+version = "1.2.1"
edition = "2021"
description = "A general-purpose sovereign cloud computing platform"
homepage = "https://hyperware.ai"
diff --git a/hyperdrive/packages/app-store/ui/package-lock.json b/hyperdrive/packages/app-store/ui/package-lock.json
index 3024d48dd..26030f5b6 100644
--- a/hyperdrive/packages/app-store/ui/package-lock.json
+++ b/hyperdrive/packages/app-store/ui/package-lock.json
@@ -42,6 +42,27 @@
"typescript": "^5.2.2",
"vite": "^5.0.8",
"vite-plugin-node-polyfills": "^0.22.0"
+ },
+ "optionalDependencies": {
+ "@rollup/rollup-android-arm-eabi": "^4.35.0",
+ "@rollup/rollup-android-arm64": "^4.35.0",
+ "@rollup/rollup-darwin-arm64": "^4.35.0",
+ "@rollup/rollup-darwin-x64": "^4.35.0",
+ "@rollup/rollup-freebsd-arm64": "^4.35.0",
+ "@rollup/rollup-freebsd-x64": "^4.35.0",
+ "@rollup/rollup-linux-arm-gnueabihf": "^4.35.0",
+ "@rollup/rollup-linux-arm-musleabihf": "^4.35.0",
+ "@rollup/rollup-linux-arm64-gnu": "^4.35.0",
+ "@rollup/rollup-linux-arm64-musl": "^4.35.0",
+ "@rollup/rollup-linux-loongarch64-gnu": "^4.35.0",
+ "@rollup/rollup-linux-powerpc64le-gnu": "^4.35.0",
+ "@rollup/rollup-linux-riscv64-gnu": "^4.35.0",
+ "@rollup/rollup-linux-s390x-gnu": "^4.35.0",
+ "@rollup/rollup-linux-x64-gnu": "^4.35.0",
+ "@rollup/rollup-linux-x64-musl": "^4.35.0",
+ "@rollup/rollup-win32-arm64-msvc": "^4.35.0",
+ "@rollup/rollup-win32-ia32-msvc": "^4.35.0",
+ "@rollup/rollup-win32-x64-msvc": "^4.35.0"
}
},
"node_modules/@adraffy/ens-normalize": {
@@ -1478,6 +1499,174 @@
}
}
},
+ "node_modules/@rollup/rollup-android-arm-eabi": {
+ "version": "4.37.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.37.0.tgz",
+ "integrity": "sha512-l7StVw6WAa8l3vA1ov80jyetOAEo1FtHvZDbzXDO/02Sq/QVvqlHkYoFwDJPIMj0GKiistsBudfx5tGFnwYWDQ==",
+ "cpu": [
+ "arm"
+ ],
+ "optional": true,
+ "os": [
+ "android"
+ ]
+ },
+ "node_modules/@rollup/rollup-android-arm64": {
+ "version": "4.37.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.37.0.tgz",
+ "integrity": "sha512-6U3SlVyMxezt8Y+/iEBcbp945uZjJwjZimu76xoG7tO1av9VO691z8PkhzQ85ith2I8R2RddEPeSfcbyPfD4hA==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "android"
+ ]
+ },
+ "node_modules/@rollup/rollup-darwin-arm64": {
+ "version": "4.37.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.37.0.tgz",
+ "integrity": "sha512-+iTQ5YHuGmPt10NTzEyMPbayiNTcOZDWsbxZYR1ZnmLnZxG17ivrPSWFO9j6GalY0+gV3Jtwrrs12DBscxnlYA==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@rollup/rollup-darwin-x64": {
+ "version": "4.37.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.37.0.tgz",
+ "integrity": "sha512-m8W2UbxLDcmRKVjgl5J/k4B8d7qX2EcJve3Sut7YGrQoPtCIQGPH5AMzuFvYRWZi0FVS0zEY4c8uttPfX6bwYQ==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@rollup/rollup-freebsd-arm64": {
+ "version": "4.37.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.37.0.tgz",
+ "integrity": "sha512-FOMXGmH15OmtQWEt174v9P1JqqhlgYge/bUjIbiVD1nI1NeJ30HYT9SJlZMqdo1uQFyt9cz748F1BHghWaDnVA==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "freebsd"
+ ]
+ },
+ "node_modules/@rollup/rollup-freebsd-x64": {
+ "version": "4.37.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.37.0.tgz",
+ "integrity": "sha512-SZMxNttjPKvV14Hjck5t70xS3l63sbVwl98g3FlVVx2YIDmfUIy29jQrsw06ewEYQ8lQSuY9mpAPlmgRD2iSsA==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "freebsd"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
+ "version": "4.37.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.37.0.tgz",
+ "integrity": "sha512-hhAALKJPidCwZcj+g+iN+38SIOkhK2a9bqtJR+EtyxrKKSt1ynCBeqrQy31z0oWU6thRZzdx53hVgEbRkuI19w==",
+ "cpu": [
+ "arm"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm-musleabihf": {
+ "version": "4.37.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.37.0.tgz",
+ "integrity": "sha512-jUb/kmn/Gd8epbHKEqkRAxq5c2EwRt0DqhSGWjPFxLeFvldFdHQs/n8lQ9x85oAeVb6bHcS8irhTJX2FCOd8Ag==",
+ "cpu": [
+ "arm"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm64-gnu": {
+ "version": "4.37.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.37.0.tgz",
+ "integrity": "sha512-oNrJxcQT9IcbcmKlkF+Yz2tmOxZgG9D9GRq+1OE6XCQwCVwxixYAa38Z8qqPzQvzt1FCfmrHX03E0pWoXm1DqA==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm64-musl": {
+ "version": "4.37.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.37.0.tgz",
+ "integrity": "sha512-pfxLBMls+28Ey2enpX3JvjEjaJMBX5XlPCZNGxj4kdJyHduPBXtxYeb8alo0a7bqOoWZW2uKynhHxF/MWoHaGQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-loongarch64-gnu": {
+ "version": "4.37.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.37.0.tgz",
+ "integrity": "sha512-yCE0NnutTC/7IGUq/PUHmoeZbIwq3KRh02e9SfFh7Vmc1Z7atuJRYWhRME5fKgT8aS20mwi1RyChA23qSyRGpA==",
+ "cpu": [
+ "loong64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
+ "version": "4.37.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.37.0.tgz",
+ "integrity": "sha512-NxcICptHk06E2Lh3a4Pu+2PEdZ6ahNHuK7o6Np9zcWkrBMuv21j10SQDJW3C9Yf/A/P7cutWoC/DptNLVsZ0VQ==",
+ "cpu": [
+ "ppc64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-riscv64-gnu": {
+ "version": "4.37.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.37.0.tgz",
+ "integrity": "sha512-PpWwHMPCVpFZLTfLq7EWJWvrmEuLdGn1GMYcm5MV7PaRgwCEYJAwiN94uBuZev0/J/hFIIJCsYw4nLmXA9J7Pw==",
+ "cpu": [
+ "riscv64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-s390x-gnu": {
+ "version": "4.37.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.37.0.tgz",
+ "integrity": "sha512-hZDDU5fgWvDdHFuExN1gBOhCuzo/8TMpidfOR+1cPZJflcEzXdCy1LjnklQdW8/Et9sryOPJAKAQRw8Jq7Tg+A==",
+ "cpu": [
+ "s390x"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
"node_modules/@rollup/rollup-linux-x64-gnu": {
"version": "4.36.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.36.0.tgz",
@@ -1504,6 +1693,42 @@
"linux"
]
},
+ "node_modules/@rollup/rollup-win32-arm64-msvc": {
+ "version": "4.37.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.37.0.tgz",
+ "integrity": "sha512-Jm7biMazjNzTU4PrQtr7VS8ibeys9Pn29/1bm4ph7CP2kf21950LgN+BaE2mJ1QujnvOc6p54eWWiVvn05SOBg==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-ia32-msvc": {
+ "version": "4.37.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.37.0.tgz",
+ "integrity": "sha512-e3/1SFm1OjefWICB2Ucstg2dxYDkDTZGDYgwufcbsxTHyqQps1UQf33dFEChBNmeSsTOyrjw2JJq0zbG5GF6RA==",
+ "cpu": [
+ "ia32"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-x64-msvc": {
+ "version": "4.37.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.37.0.tgz",
+ "integrity": "sha512-LWbXUBwn/bcLx2sSsqy7pK5o+Nr+VCoRoAohfJ5C/aBio9nfJmGQqHAhU6pwxV/RmyTk5AqdySma7uwWGlmeuA==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
"node_modules/@safe-global/safe-apps-provider": {
"version": "0.18.5",
"resolved": "https://registry.npmjs.org/@safe-global/safe-apps-provider/-/safe-apps-provider-0.18.5.tgz",
@@ -5435,6 +5660,19 @@
"dev": true,
"license": "ISC"
},
+ "node_modules/fsevents": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+ "hasInstallScript": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
"node_modules/function-bind": {
"version": "1.1.2",
"license": "MIT",
@@ -7656,6 +7894,210 @@
"fsevents": "~2.3.2"
}
},
+ "node_modules/rollup/node_modules/@rollup/rollup-android-arm-eabi": {
+ "version": "4.36.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.36.0.tgz",
+ "integrity": "sha512-jgrXjjcEwN6XpZXL0HUeOVGfjXhPyxAbbhD0BlXUB+abTOpbPiN5Wb3kOT7yb+uEtATNYF5x5gIfwutmuBA26w==",
+ "cpu": [
+ "arm"
+ ],
+ "optional": true,
+ "os": [
+ "android"
+ ]
+ },
+ "node_modules/rollup/node_modules/@rollup/rollup-android-arm64": {
+ "version": "4.36.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.36.0.tgz",
+ "integrity": "sha512-NyfuLvdPdNUfUNeYKUwPwKsE5SXa2J6bCt2LdB/N+AxShnkpiczi3tcLJrm5mA+eqpy0HmaIY9F6XCa32N5yzg==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "android"
+ ]
+ },
+ "node_modules/rollup/node_modules/@rollup/rollup-darwin-arm64": {
+ "version": "4.36.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.36.0.tgz",
+ "integrity": "sha512-JQ1Jk5G4bGrD4pWJQzWsD8I1n1mgPXq33+/vP4sk8j/z/C2siRuxZtaUA7yMTf71TCZTZl/4e1bfzwUmFb3+rw==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/rollup/node_modules/@rollup/rollup-darwin-x64": {
+ "version": "4.36.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.36.0.tgz",
+ "integrity": "sha512-6c6wMZa1lrtiRsbDziCmjE53YbTkxMYhhnWnSW8R/yqsM7a6mSJ3uAVT0t8Y/DGt7gxUWYuFM4bwWk9XCJrFKA==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/rollup/node_modules/@rollup/rollup-freebsd-arm64": {
+ "version": "4.36.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.36.0.tgz",
+ "integrity": "sha512-KXVsijKeJXOl8QzXTsA+sHVDsFOmMCdBRgFmBb+mfEb/7geR7+C8ypAml4fquUt14ZyVXaw2o1FWhqAfOvA4sg==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "freebsd"
+ ]
+ },
+ "node_modules/rollup/node_modules/@rollup/rollup-freebsd-x64": {
+ "version": "4.36.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.36.0.tgz",
+ "integrity": "sha512-dVeWq1ebbvByI+ndz4IJcD4a09RJgRYmLccwlQ8bPd4olz3Y213uf1iwvc7ZaxNn2ab7bjc08PrtBgMu6nb4pQ==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "freebsd"
+ ]
+ },
+ "node_modules/rollup/node_modules/@rollup/rollup-linux-arm-gnueabihf": {
+ "version": "4.36.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.36.0.tgz",
+ "integrity": "sha512-bvXVU42mOVcF4le6XSjscdXjqx8okv4n5vmwgzcmtvFdifQ5U4dXFYaCB87namDRKlUL9ybVtLQ9ztnawaSzvg==",
+ "cpu": [
+ "arm"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/rollup/node_modules/@rollup/rollup-linux-arm-musleabihf": {
+ "version": "4.36.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.36.0.tgz",
+ "integrity": "sha512-JFIQrDJYrxOnyDQGYkqnNBtjDwTgbasdbUiQvcU8JmGDfValfH1lNpng+4FWlhaVIR4KPkeddYjsVVbmJYvDcg==",
+ "cpu": [
+ "arm"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/rollup/node_modules/@rollup/rollup-linux-arm64-gnu": {
+ "version": "4.36.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.36.0.tgz",
+ "integrity": "sha512-KqjYVh3oM1bj//5X7k79PSCZ6CvaVzb7Qs7VMWS+SlWB5M8p3FqufLP9VNp4CazJ0CsPDLwVD9r3vX7Ci4J56A==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/rollup/node_modules/@rollup/rollup-linux-arm64-musl": {
+ "version": "4.36.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.36.0.tgz",
+ "integrity": "sha512-QiGnhScND+mAAtfHqeT+cB1S9yFnNQ/EwCg5yE3MzoaZZnIV0RV9O5alJAoJKX/sBONVKeZdMfO8QSaWEygMhw==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/rollup/node_modules/@rollup/rollup-linux-loongarch64-gnu": {
+ "version": "4.36.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.36.0.tgz",
+ "integrity": "sha512-1ZPyEDWF8phd4FQtTzMh8FQwqzvIjLsl6/84gzUxnMNFBtExBtpL51H67mV9xipuxl1AEAerRBgBwFNpkw8+Lg==",
+ "cpu": [
+ "loong64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/rollup/node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
+ "version": "4.36.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.36.0.tgz",
+ "integrity": "sha512-VMPMEIUpPFKpPI9GZMhJrtu8rxnp6mJR3ZzQPykq4xc2GmdHj3Q4cA+7avMyegXy4n1v+Qynr9fR88BmyO74tg==",
+ "cpu": [
+ "ppc64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/rollup/node_modules/@rollup/rollup-linux-riscv64-gnu": {
+ "version": "4.36.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.36.0.tgz",
+ "integrity": "sha512-ttE6ayb/kHwNRJGYLpuAvB7SMtOeQnVXEIpMtAvx3kepFQeowVED0n1K9nAdraHUPJ5hydEMxBpIR7o4nrm8uA==",
+ "cpu": [
+ "riscv64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/rollup/node_modules/@rollup/rollup-linux-s390x-gnu": {
+ "version": "4.36.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.36.0.tgz",
+ "integrity": "sha512-4a5gf2jpS0AIe7uBjxDeUMNcFmaRTbNv7NxI5xOCs4lhzsVyGR/0qBXduPnoWf6dGC365saTiwag8hP1imTgag==",
+ "cpu": [
+ "s390x"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/rollup/node_modules/@rollup/rollup-win32-arm64-msvc": {
+ "version": "4.36.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.36.0.tgz",
+ "integrity": "sha512-qbqt4N7tokFwwSVlWDsjfoHgviS3n/vZ8LK0h1uLG9TYIRuUTJC88E1xb3LM2iqZ/WTqNQjYrtmtGmrmmawB6A==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/rollup/node_modules/@rollup/rollup-win32-ia32-msvc": {
+ "version": "4.36.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.36.0.tgz",
+ "integrity": "sha512-t+RY0JuRamIocMuQcfwYSOkmdX9dtkr1PbhKW42AMvaDQa+jOdpUYysroTF/nuPpAaQMWp7ye+ndlmmthieJrQ==",
+ "cpu": [
+ "ia32"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/rollup/node_modules/@rollup/rollup-win32-x64-msvc": {
+ "version": "4.36.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.36.0.tgz",
+ "integrity": "sha512-aRXd7tRZkWLqGbChgcMMDEHjOKudo1kChb1Jt1IfR8cY/KIpgNviLeJy5FUb9IpSuQj8dU2fAYNMPW/hLKOSTw==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
"node_modules/run-parallel": {
"version": "1.2.0",
"funding": [
diff --git a/hyperdrive/packages/app-store/ui/package.json b/hyperdrive/packages/app-store/ui/package.json
index f5009e1da..0a0922414 100644
--- a/hyperdrive/packages/app-store/ui/package.json
+++ b/hyperdrive/packages/app-store/ui/package.json
@@ -47,5 +47,26 @@
"typescript": "^5.2.2",
"vite": "^5.0.8",
"vite-plugin-node-polyfills": "^0.22.0"
+ },
+ "optionalDependencies": {
+ "@rollup/rollup-android-arm-eabi": "^4.35.0",
+ "@rollup/rollup-android-arm64": "^4.35.0",
+ "@rollup/rollup-darwin-arm64": "^4.35.0",
+ "@rollup/rollup-darwin-x64": "^4.35.0",
+ "@rollup/rollup-freebsd-arm64": "^4.35.0",
+ "@rollup/rollup-freebsd-x64": "^4.35.0",
+ "@rollup/rollup-linux-arm-gnueabihf": "^4.35.0",
+ "@rollup/rollup-linux-arm-musleabihf": "^4.35.0",
+ "@rollup/rollup-linux-arm64-gnu": "^4.35.0",
+ "@rollup/rollup-linux-arm64-musl": "^4.35.0",
+ "@rollup/rollup-linux-loongarch64-gnu": "^4.35.0",
+ "@rollup/rollup-linux-powerpc64le-gnu": "^4.35.0",
+ "@rollup/rollup-linux-riscv64-gnu": "^4.35.0",
+ "@rollup/rollup-linux-s390x-gnu": "^4.35.0",
+ "@rollup/rollup-linux-x64-gnu": "^4.35.0",
+ "@rollup/rollup-linux-x64-musl": "^4.35.0",
+ "@rollup/rollup-win32-arm64-msvc": "^4.35.0",
+ "@rollup/rollup-win32-ia32-msvc": "^4.35.0",
+ "@rollup/rollup-win32-x64-msvc": "^4.35.0"
}
-}
\ No newline at end of file
+}
diff --git a/hyperdrive/packages/app-store/ui/src/components/AppCard.tsx b/hyperdrive/packages/app-store/ui/src/components/AppCard.tsx
new file mode 100644
index 000000000..3b31d8cde
--- /dev/null
+++ b/hyperdrive/packages/app-store/ui/src/components/AppCard.tsx
@@ -0,0 +1,46 @@
+import { AppListing } from "../types/Apps";
+import React from "react";
+import { useNavigate } from "react-router-dom";
+
+export const AppCard: React.FC<{ app: AppListing }> = ({ app }) => {
+ if (!app || !app.package_id) return null;
+ const navigate = useNavigate();
+
+ return (
+
{
+ navigate(`/app/${app.package_id.package_name}:${app.package_id.publisher_node}`);
+ }}
+ >
+
+

+
+
+ {app.metadata?.name || app.package_id.package_name}
+
+
+ {app.package_id.publisher_node}
+
+
+
+ {app.metadata?.description && (
+
+ {app.metadata.description.length > 100
+ ? `${app.metadata.description.substring(0, 100)}...`
+ : app.metadata.description}
+
+ )}
+
+ );
+};
\ No newline at end of file
diff --git a/hyperdrive/packages/app-store/ui/src/components/NotificationBay.tsx b/hyperdrive/packages/app-store/ui/src/components/NotificationBay.tsx
index 20933bda6..5c6d94055 100644
--- a/hyperdrive/packages/app-store/ui/src/components/NotificationBay.tsx
+++ b/hyperdrive/packages/app-store/ui/src/components/NotificationBay.tsx
@@ -65,9 +65,9 @@ const NotificationBay: React.FC = () => {
{notification.message}
{notification.type === 'download' && notification.metadata?.progress && (
-
+
diff --git a/hyperdrive/packages/app-store/ui/src/index.css b/hyperdrive/packages/app-store/ui/src/index.css
index 9c2925873..7deff9474 100644
--- a/hyperdrive/packages/app-store/ui/src/index.css
+++ b/hyperdrive/packages/app-store/ui/src/index.css
@@ -1,54 +1,3 @@
-/* App Grid */
-.app-grid {
- display: grid;
- grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
- gap: 1rem;
- margin-bottom: 1.5rem;
-}
-
-.app-grid .app-card {
- padding: 1rem;
- border-radius: var(--radius-lg);
- background: light-dark(rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0.05)) !important;
- transition: background-color 0.2s ease;
- display: flex;
- flex-direction: column;
- align-items: center;
-}
-
-.app-grid .app-card:hover {
- background: light-dark(rgba(255, 255, 255, 0.25), rgba(255, 255, 255, 0.1)) !important;
-}
-
-.app-card .my-0.mx-auto.fit-content {
- display: flex;
- justify-content: center;
- width: 100%;
- margin-bottom: 0.5rem;
-}
-
-.app-card img {
- display: block;
- margin: 0 auto;
-}
-
-.app-card .app-name {
- text-align: center;
- margin-bottom: 0.3rem;
- width: 100%;
-}
-
-.app-card .app-publisher {
- text-align: center;
- margin-bottom: 1rem;
- width: 100%;
-}
-
-.app-card .app-description {
- text-align: center;
- width: 100%;
-}
-
/* Messages */
.message {
display: flex;
@@ -152,26 +101,13 @@
margin: 0 auto;
}
-.store-page > p,
-.store-page > .button.tertiary {
+.store-page>p,
+.store-page>.button.tertiary {
text-align: center;
display: block;
margin: 0 auto;
}
-.reset-store-container {
- display: flex;
- flex-direction: column;
- align-items: center;
- justify-content: center;
- margin-top: 2rem;
- text-align: center;
-}
-
-.reset-store-container p {
- margin-bottom: 0.5rem;
-}
-
.app-description {
margin-bottom: 0.5rem;
line-height: 1.6;
@@ -216,9 +152,7 @@
}
/* Action Buttons */
-.action-button,
-.primary,
-.secondary {
+.action-button {
display: inline-flex;
align-items: center;
justify-content: center;
@@ -241,20 +175,8 @@
color: var(--off-black);
}
-.secondary {
- background-color: light-dark(var(--surface-light), var(--surface-dark));
- color: var(--primary-color);
- border: 2px solid var(--primary-color);
-}
-
-.secondary:hover:not(:disabled) {
- background-color: var(--primary-color);
- color: var(--text-light);
-}
-.action-button:disabled,
-.primary:disabled,
-.secondary:disabled {
+.action-button:disabled {
opacity: 0.5;
cursor: not-allowed;
}
@@ -562,20 +484,6 @@
margin-left: auto;
}
-.progress-bar {
- margin-top: 0.5rem;
- height: 4px;
- background-color: light-dark(var(--surface-light), var(--surface-dark));
- border-radius: 2px;
- overflow: hidden;
-}
-
-.progress {
- height: 100%;
- background-color: var(--primary-color);
- transition: width 0.3s ease;
-}
-
/* Modal styles */
.modal-overlay {
position: fixed;
@@ -1005,11 +913,4 @@
background-color: light-dark(var(--surface-light), var(--surface-dark));
padding: 1.5rem;
border-radius: var(--radius-lg);
-}
-
-.modal-header {
- display: flex;
- align-items: center;
- gap: 0.75rem;
- margin-bottom: 1rem;
}
\ No newline at end of file
diff --git a/hyperdrive/packages/app-store/ui/src/pages/StorePage.tsx b/hyperdrive/packages/app-store/ui/src/pages/StorePage.tsx
index 65eacdd9f..0a4c75a89 100644
--- a/hyperdrive/packages/app-store/ui/src/pages/StorePage.tsx
+++ b/hyperdrive/packages/app-store/ui/src/pages/StorePage.tsx
@@ -1,9 +1,95 @@
import React, { useState, useEffect } from "react";
import useAppsStore from "../store";
import { AppListing } from "../types/Apps";
-import { Link } from "react-router-dom";
import { FaSearch } from "react-icons/fa";
import { ResetButton } from "../components";
+import { AppCard } from "../components/AppCard";
+const mockApps: AppListing[] = [
+ {
+ package_id: {
+ package_name: "test-app",
+ publisher_node: "test-node",
+ },
+ tba: "0x0000000000000000000000000000000000000000",
+ metadata_uri: "https://example.com/metadata",
+ metadata_hash: "1234567890",
+ auto_update: false,
+ metadata: {
+ name: "Test App",
+ description: "This is a test app",
+ properties: {
+ package_name: "test-app",
+ publisher: "test-node",
+ current_version: "1.0.0",
+ mirrors: [],
+ code_hashes: [],
+ },
+ },
+ },
+ {
+ package_id: {
+ package_name: "test-app",
+ publisher_node: "test-node",
+ },
+ tba: "0x0000000000000000000000000000000000000000",
+ metadata_uri: "https://example.com/metadata",
+ metadata_hash: "1234567890",
+ auto_update: false,
+ metadata: {
+ name: "Test App",
+ description: "This is a test app",
+ properties: {
+ package_name: "test-app",
+ publisher: "test-node",
+ current_version: "1.0.0",
+ mirrors: [],
+ code_hashes: [],
+ },
+ },
+ },
+ {
+ package_id: {
+ package_name: "test-app",
+ publisher_node: "test-node",
+ },
+ tba: "0x0000000000000000000000000000000000000000",
+ metadata_uri: "https://example.com/metadata",
+ metadata_hash: "1234567890",
+ auto_update: false,
+ metadata: {
+ name: "Test App TestappTestappTestappTestappTestapp",
+ description: "adsf adf adsf asdf asdf adgfagafege aadsf adf adsf asdf asdf adgfagafege aadsf adf adsf asdf asdf adgfagafege aadsf adf adsf asdf asdf adgfagafege aadsf adf adsf asdf asdf adgfagafege aadsf adf adsf asdf asdf adgfagafege a",
+ properties: {
+ package_name: "test-app",
+ publisher: "test-node",
+ current_version: "1.0.0",
+ mirrors: [],
+ code_hashes: [],
+ },
+ },
+ },
+ {
+ package_id: {
+ package_name: "test-app",
+ publisher_node: "test-node",
+ },
+ tba: "0x0000000000000000000000000000000000000000",
+ metadata_uri: "https://example.com/metadata",
+ metadata_hash: "1234567890",
+ auto_update: false,
+ metadata: {
+ name: "Test App",
+ description: "This is a test app",
+ properties: {
+ package_name: "test-app",
+ publisher: "test-nodetest-nodetest-nodetest-nodetest-node",
+ current_version: "1.0.0",
+ mirrors: [],
+ code_hashes: [],
+ },
+ },
+ },
+];
export default function StorePage() {
const { listings, fetchListings, fetchUpdates } = useAppsStore();
@@ -42,49 +128,26 @@ export default function StorePage() {
Loading...
) : filteredApps.length === 0 ? (
No apps available.
+ //
+ // {mockApps.map((app) => (
+ //
+ // ))}
+ //
) : (
-
+
{filteredApps.map((app) => (
))}
)}
-
+
Can't find the app you're looking for?
);
}
-
-const AppCard: React.FC<{ app: AppListing }> = ({ app }) => {
- if (!app || !app.package_id) return null;
-
- return (
-
-
-

-
-
- {app.metadata?.name || app.package_id.package_name}
-
-
- {app.package_id.publisher_node}
-
- {app.metadata?.description && (
-
- {app.metadata.description.length > 100
- ? `${app.metadata.description.substring(0, 100)}...`
- : app.metadata.description}
-
- )}
-
- );
-};
diff --git a/hyperdrive/packages/homepage/ui/package-lock.json b/hyperdrive/packages/homepage/ui/package-lock.json
index dcf8d3797..072cec70a 100644
--- a/hyperdrive/packages/homepage/ui/package-lock.json
+++ b/hyperdrive/packages/homepage/ui/package-lock.json
@@ -33,6 +33,27 @@
"rollup": "^4.35.0",
"typescript": "^5.2.2",
"vite": "^5.2.0"
+ },
+ "optionalDependencies": {
+ "@rollup/rollup-android-arm-eabi": "^4.35.0",
+ "@rollup/rollup-android-arm64": "^4.35.0",
+ "@rollup/rollup-darwin-arm64": "^4.35.0",
+ "@rollup/rollup-darwin-x64": "^4.35.0",
+ "@rollup/rollup-freebsd-arm64": "^4.35.0",
+ "@rollup/rollup-freebsd-x64": "^4.35.0",
+ "@rollup/rollup-linux-arm-gnueabihf": "^4.35.0",
+ "@rollup/rollup-linux-arm-musleabihf": "^4.35.0",
+ "@rollup/rollup-linux-arm64-gnu": "^4.35.0",
+ "@rollup/rollup-linux-arm64-musl": "^4.35.0",
+ "@rollup/rollup-linux-loongarch64-gnu": "^4.35.0",
+ "@rollup/rollup-linux-powerpc64le-gnu": "^4.35.0",
+ "@rollup/rollup-linux-riscv64-gnu": "^4.35.0",
+ "@rollup/rollup-linux-s390x-gnu": "^4.35.0",
+ "@rollup/rollup-linux-x64-gnu": "^4.35.0",
+ "@rollup/rollup-linux-x64-musl": "^4.35.0",
+ "@rollup/rollup-win32-arm64-msvc": "^4.35.0",
+ "@rollup/rollup-win32-ia32-msvc": "^4.35.0",
+ "@rollup/rollup-win32-x64-msvc": "^4.35.0"
}
},
"node_modules/@ampproject/remapping": {
@@ -936,6 +957,174 @@
}
}
},
+ "node_modules/@rollup/rollup-android-arm-eabi": {
+ "version": "4.37.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.37.0.tgz",
+ "integrity": "sha512-l7StVw6WAa8l3vA1ov80jyetOAEo1FtHvZDbzXDO/02Sq/QVvqlHkYoFwDJPIMj0GKiistsBudfx5tGFnwYWDQ==",
+ "cpu": [
+ "arm"
+ ],
+ "optional": true,
+ "os": [
+ "android"
+ ]
+ },
+ "node_modules/@rollup/rollup-android-arm64": {
+ "version": "4.37.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.37.0.tgz",
+ "integrity": "sha512-6U3SlVyMxezt8Y+/iEBcbp945uZjJwjZimu76xoG7tO1av9VO691z8PkhzQ85ith2I8R2RddEPeSfcbyPfD4hA==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "android"
+ ]
+ },
+ "node_modules/@rollup/rollup-darwin-arm64": {
+ "version": "4.37.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.37.0.tgz",
+ "integrity": "sha512-+iTQ5YHuGmPt10NTzEyMPbayiNTcOZDWsbxZYR1ZnmLnZxG17ivrPSWFO9j6GalY0+gV3Jtwrrs12DBscxnlYA==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@rollup/rollup-darwin-x64": {
+ "version": "4.37.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.37.0.tgz",
+ "integrity": "sha512-m8W2UbxLDcmRKVjgl5J/k4B8d7qX2EcJve3Sut7YGrQoPtCIQGPH5AMzuFvYRWZi0FVS0zEY4c8uttPfX6bwYQ==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@rollup/rollup-freebsd-arm64": {
+ "version": "4.37.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.37.0.tgz",
+ "integrity": "sha512-FOMXGmH15OmtQWEt174v9P1JqqhlgYge/bUjIbiVD1nI1NeJ30HYT9SJlZMqdo1uQFyt9cz748F1BHghWaDnVA==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "freebsd"
+ ]
+ },
+ "node_modules/@rollup/rollup-freebsd-x64": {
+ "version": "4.37.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.37.0.tgz",
+ "integrity": "sha512-SZMxNttjPKvV14Hjck5t70xS3l63sbVwl98g3FlVVx2YIDmfUIy29jQrsw06ewEYQ8lQSuY9mpAPlmgRD2iSsA==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "freebsd"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
+ "version": "4.37.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.37.0.tgz",
+ "integrity": "sha512-hhAALKJPidCwZcj+g+iN+38SIOkhK2a9bqtJR+EtyxrKKSt1ynCBeqrQy31z0oWU6thRZzdx53hVgEbRkuI19w==",
+ "cpu": [
+ "arm"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm-musleabihf": {
+ "version": "4.37.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.37.0.tgz",
+ "integrity": "sha512-jUb/kmn/Gd8epbHKEqkRAxq5c2EwRt0DqhSGWjPFxLeFvldFdHQs/n8lQ9x85oAeVb6bHcS8irhTJX2FCOd8Ag==",
+ "cpu": [
+ "arm"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm64-gnu": {
+ "version": "4.37.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.37.0.tgz",
+ "integrity": "sha512-oNrJxcQT9IcbcmKlkF+Yz2tmOxZgG9D9GRq+1OE6XCQwCVwxixYAa38Z8qqPzQvzt1FCfmrHX03E0pWoXm1DqA==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm64-musl": {
+ "version": "4.37.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.37.0.tgz",
+ "integrity": "sha512-pfxLBMls+28Ey2enpX3JvjEjaJMBX5XlPCZNGxj4kdJyHduPBXtxYeb8alo0a7bqOoWZW2uKynhHxF/MWoHaGQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-loongarch64-gnu": {
+ "version": "4.37.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.37.0.tgz",
+ "integrity": "sha512-yCE0NnutTC/7IGUq/PUHmoeZbIwq3KRh02e9SfFh7Vmc1Z7atuJRYWhRME5fKgT8aS20mwi1RyChA23qSyRGpA==",
+ "cpu": [
+ "loong64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
+ "version": "4.37.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.37.0.tgz",
+ "integrity": "sha512-NxcICptHk06E2Lh3a4Pu+2PEdZ6ahNHuK7o6Np9zcWkrBMuv21j10SQDJW3C9Yf/A/P7cutWoC/DptNLVsZ0VQ==",
+ "cpu": [
+ "ppc64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-riscv64-gnu": {
+ "version": "4.37.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.37.0.tgz",
+ "integrity": "sha512-PpWwHMPCVpFZLTfLq7EWJWvrmEuLdGn1GMYcm5MV7PaRgwCEYJAwiN94uBuZev0/J/hFIIJCsYw4nLmXA9J7Pw==",
+ "cpu": [
+ "riscv64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-s390x-gnu": {
+ "version": "4.37.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.37.0.tgz",
+ "integrity": "sha512-hZDDU5fgWvDdHFuExN1gBOhCuzo/8TMpidfOR+1cPZJflcEzXdCy1LjnklQdW8/Et9sryOPJAKAQRw8Jq7Tg+A==",
+ "cpu": [
+ "s390x"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
"node_modules/@rollup/rollup-linux-x64-gnu": {
"version": "4.37.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.37.0.tgz",
@@ -949,6 +1138,54 @@
"linux"
]
},
+ "node_modules/@rollup/rollup-linux-x64-musl": {
+ "version": "4.37.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.37.0.tgz",
+ "integrity": "sha512-E2lPrLKE8sQbY/2bEkVTGDEk4/49UYRVWgj90MY8yPjpnGBQ+Xi1Qnr7b7UIWw1NOggdFQFOLZ8+5CzCiz143w==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-arm64-msvc": {
+ "version": "4.37.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.37.0.tgz",
+ "integrity": "sha512-Jm7biMazjNzTU4PrQtr7VS8ibeys9Pn29/1bm4ph7CP2kf21950LgN+BaE2mJ1QujnvOc6p54eWWiVvn05SOBg==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-ia32-msvc": {
+ "version": "4.37.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.37.0.tgz",
+ "integrity": "sha512-e3/1SFm1OjefWICB2Ucstg2dxYDkDTZGDYgwufcbsxTHyqQps1UQf33dFEChBNmeSsTOyrjw2JJq0zbG5GF6RA==",
+ "cpu": [
+ "ia32"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-x64-msvc": {
+ "version": "4.37.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.37.0.tgz",
+ "integrity": "sha512-LWbXUBwn/bcLx2sSsqy7pK5o+Nr+VCoRoAohfJ5C/aBio9nfJmGQqHAhU6pwxV/RmyTk5AqdySma7uwWGlmeuA==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
"node_modules/@types/babel__core": {
"version": "7.20.5",
"resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz",
diff --git a/hyperdrive/packages/homepage/ui/package.json b/hyperdrive/packages/homepage/ui/package.json
index 04f9e2cde..faf3c6047 100644
--- a/hyperdrive/packages/homepage/ui/package.json
+++ b/hyperdrive/packages/homepage/ui/package.json
@@ -36,5 +36,26 @@
"rollup": "^4.35.0",
"typescript": "^5.2.2",
"vite": "^5.2.0"
+ },
+ "optionalDependencies": {
+ "@rollup/rollup-android-arm-eabi": "^4.35.0",
+ "@rollup/rollup-android-arm64": "^4.35.0",
+ "@rollup/rollup-darwin-arm64": "^4.35.0",
+ "@rollup/rollup-darwin-x64": "^4.35.0",
+ "@rollup/rollup-freebsd-arm64": "^4.35.0",
+ "@rollup/rollup-freebsd-x64": "^4.35.0",
+ "@rollup/rollup-linux-arm-gnueabihf": "^4.35.0",
+ "@rollup/rollup-linux-arm-musleabihf": "^4.35.0",
+ "@rollup/rollup-linux-arm64-gnu": "^4.35.0",
+ "@rollup/rollup-linux-arm64-musl": "^4.35.0",
+ "@rollup/rollup-linux-loongarch64-gnu": "^4.35.0",
+ "@rollup/rollup-linux-powerpc64le-gnu": "^4.35.0",
+ "@rollup/rollup-linux-riscv64-gnu": "^4.35.0",
+ "@rollup/rollup-linux-s390x-gnu": "^4.35.0",
+ "@rollup/rollup-linux-x64-gnu": "^4.35.0",
+ "@rollup/rollup-linux-x64-musl": "^4.35.0",
+ "@rollup/rollup-win32-arm64-msvc": "^4.35.0",
+ "@rollup/rollup-win32-ia32-msvc": "^4.35.0",
+ "@rollup/rollup-win32-x64-msvc": "^4.35.0"
}
}
diff --git a/hyperdrive/packages/homepage/ui/src/components/AllApps.tsx b/hyperdrive/packages/homepage/ui/src/components/AllApps.tsx
index 1f8e1ee94..8a64df913 100644
--- a/hyperdrive/packages/homepage/ui/src/components/AllApps.tsx
+++ b/hyperdrive/packages/homepage/ui/src/components/AllApps.tsx
@@ -1,6 +1,7 @@
import React, { useState, useEffect, useMemo } from "react";
import useHomepageStore, { HomepageApp } from "../store/homepageStore";
import AppDisplay from "./AppDisplay";
+import classNames from "classnames";
const AllApps: React.FC = () => {
const { apps } = useHomepageStore();
@@ -86,9 +87,24 @@ const AllApps: React.FC = () => {
};
return (
-
+
{
onDragOver={(e) => handleDragOver(e, index)}
onDragEnd={handleDragEnd}
onDrop={(e) => handleDrop(e, index)}
- className={`app-wrapper ${draggedIndex === index ? "dragging" : ""
- } ${dragOverIndex === index ? "drag-over" : ""}
- ${index === displayedApps.length - 1 ? "last-app" : ""}
- ${index === 0 ? "first-app" : ""}
- ${index % 5 === 0 ? "first-in-row" : ""}
- ${(index + 1) % 5 === 0 || index === displayedApps.length - 1 ? "last-in-row" : ""}
- `}
+ className={classNames("app-wrapper", {
+ dragging: draggedIndex === index,
+ "drag-over": dragOverIndex === index,
+ lastApp: index === displayedApps.length - 1,
+ firstApp: index === 0,
+ "first-in-row": index % 5 === 0,
+ "last-in-row": (index + 1) % 5 === 0 || index === displayedApps.length - 1
+ })}
>
⋮⋮
diff --git a/hyperdrive/packages/homepage/ui/src/components/AppDisplay.tsx b/hyperdrive/packages/homepage/ui/src/components/AppDisplay.tsx
index b2952b2db..fdc3295c7 100644
--- a/hyperdrive/packages/homepage/ui/src/components/AppDisplay.tsx
+++ b/hyperdrive/packages/homepage/ui/src/components/AppDisplay.tsx
@@ -29,7 +29,7 @@ const AppDisplay: React.FC
= ({ app }) => {
) : (
)}
- {app?.label || app?.package_name}
+ {app?.label || app?.package_name}
);
};
diff --git a/hyperdrive/packages/homepage/ui/src/components/Modal.tsx b/hyperdrive/packages/homepage/ui/src/components/Modal.tsx
index 570099a48..b85d18d22 100644
--- a/hyperdrive/packages/homepage/ui/src/components/Modal.tsx
+++ b/hyperdrive/packages/homepage/ui/src/components/Modal.tsx
@@ -1,12 +1,15 @@
import { FaX } from "react-icons/fa6"
import { useEffect } from 'react';
+import classNames from "classnames";
interface Props extends React.HTMLAttributes {
title: string
onClose: () => void
+ outerClassName?: string
+ innerClassName?: string
}
-export const Modal: React.FC = ({ title, onClose, children }) => {
+export const Modal: React.FC = ({ title, onClose, children, outerClassName, innerClassName }) => {
useEffect(() => {
const handleKeyDown = (event: KeyboardEvent) => {
if (event.key === 'Escape') {
@@ -22,11 +25,30 @@ export const Modal: React.FC = ({ title, onClose, children }) => {
}, [onClose]);
return (
-
-
-
-
{title}
-