From e5619bb0023cb1b0a96cb532e28cd6ca6a0ef9bd Mon Sep 17 00:00:00 2001 From: Harivansh Rathi Date: Tue, 31 Mar 2026 21:25:53 +0000 Subject: [PATCH] style the shell app Co-authored-by: Codex --- .../css/ainascontrolplane.css | 85 +++++++++++++++++++ apps/ainas-controlplane/img/app-dark.svg | 6 ++ apps/ainas-controlplane/img/app.svg | 6 ++ apps/ainas-controlplane/templates/admin.php | 43 ++++++++++ apps/ainas-controlplane/templates/index.php | 51 +++++++++++ 5 files changed, 191 insertions(+) create mode 100644 apps/ainas-controlplane/css/ainascontrolplane.css create mode 100644 apps/ainas-controlplane/img/app-dark.svg create mode 100644 apps/ainas-controlplane/img/app.svg create mode 100644 apps/ainas-controlplane/templates/admin.php create mode 100644 apps/ainas-controlplane/templates/index.php diff --git a/apps/ainas-controlplane/css/ainascontrolplane.css b/apps/ainas-controlplane/css/ainascontrolplane.css new file mode 100644 index 0000000..d5aec9e --- /dev/null +++ b/apps/ainas-controlplane/css/ainascontrolplane.css @@ -0,0 +1,85 @@ +.ainas-shell { + max-width: 1100px; + margin: 0 auto; + padding: 32px; +} + +.ainas-shell__hero { + margin-bottom: 28px; + padding: 28px; + border-radius: 24px; + background: linear-gradient(135deg, #10212d 0%, #184152 100%); + color: #f6fafc; +} + +.ainas-shell__eyebrow { + margin: 0 0 12px; + font-size: 12px; + letter-spacing: 0.12em; + text-transform: uppercase; + opacity: 0.8; +} + +.ainas-shell__title { + margin: 0 0 12px; + font-size: 32px; + line-height: 1.1; +} + +.ainas-shell__copy { + margin: 0; + max-width: 70ch; + font-size: 15px; + line-height: 1.6; +} + +.ainas-shell__grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); + gap: 20px; +} + +.ainas-shell__card { + padding: 24px; + border: 1px solid rgba(16, 33, 45, 0.12); + border-radius: 20px; + background: #ffffff; + box-shadow: 0 20px 40px rgba(16, 33, 45, 0.06); +} + +.ainas-shell__card h2 { + margin-top: 0; +} + +.ainas-shell__card dl { + display: grid; + grid-template-columns: minmax(120px, 160px) 1fr; + gap: 8px 16px; + margin: 0; +} + +.ainas-shell__card dt { + font-weight: 600; +} + +.ainas-shell__card dd { + margin: 0; +} + +.ainas-shell__card code { + display: inline-block; + padding: 4px 8px; + border-radius: 999px; + background: #eef4f7; +} + +.ainas-shell__card ul { + margin: 0; + padding-left: 20px; +} + +.ainas-shell__error { + margin-top: 16px; + color: #b42318; +} + diff --git a/apps/ainas-controlplane/img/app-dark.svg b/apps/ainas-controlplane/img/app-dark.svg new file mode 100644 index 0000000..036cf93 --- /dev/null +++ b/apps/ainas-controlplane/img/app-dark.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/apps/ainas-controlplane/img/app.svg b/apps/ainas-controlplane/img/app.svg new file mode 100644 index 0000000..da33d40 --- /dev/null +++ b/apps/ainas-controlplane/img/app.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/apps/ainas-controlplane/templates/admin.php b/apps/ainas-controlplane/templates/admin.php new file mode 100644 index 0000000..37d622f --- /dev/null +++ b/apps/ainas-controlplane/templates/admin.php @@ -0,0 +1,43 @@ + + +
+
+

Admin settings

+

aiNAS control-plane wiring

+

+ The local scaffold wires this app to the control plane through the AINAS_CONTROL_PLANE_URL environment variable in the Nextcloud container. +

+
+ +
+
+

Current wiring

+
+
Control-plane URL
+
+
Reachable
+
+
Reported version
+
+
+
+ +
+

Next step

+

Keep storage policy, sharing logic, and orchestration in the control-plane service. This page should remain a thin integration surface.

+
+
+
+ diff --git a/apps/ainas-controlplane/templates/index.php b/apps/ainas-controlplane/templates/index.php new file mode 100644 index 0000000..3d1c3d8 --- /dev/null +++ b/apps/ainas-controlplane/templates/index.php @@ -0,0 +1,51 @@ + + +
+
+

aiNAS inside Nextcloud

+

+

+ This shell app stays intentionally thin. It exposes aiNAS entry points inside Nextcloud and delegates business logic to the external control-plane service. +

+
+ +
+
+

Control plane

+
+
Configured URL
+
+
Status
+
+
Version
+
+
+ +

+ +
+ +
+

Boundary

+
    +
  • Nextcloud provides file and client primitives.
  • +
  • aiNAS owns control-plane policy and orchestration.
  • +
  • The shell app only adapts between the two.
  • +
+
+
+
+