feat(web/ui): unify config sections, restore home padding, improve project repos

- Add shared .config-section component class and migrate Tool Workshop
  and Config Profiles editors to use it.
- Restore --space-4 padding on home hero, summary cards, and sections
  with --space-3 on mobile.
- Restructure expandable project card: add 'Repositories' header with
  repo count and move 'Add Repository' button into the section header.
- Left-align repository blocks so they fill from the project detail edge.
This commit is contained in:
Developer
2026-06-16 15:55:58 +00:00
parent cbd5533adf
commit 972dae64f2
5 changed files with 235 additions and 134 deletions
@@ -286,8 +286,8 @@ export const ManifestEditor = ({
return (
<div className="stack stack-lg">
{/* Base Image */}
<div className="card-md stack stack-md">
<h4 className="m-0">Base Image</h4>
<section className="config-section">
<h4 className="config-section-title">Base Image</h4>
<div className="form-row row-md">
<div className="form-group">
<label>Base Definition</label>
@@ -322,11 +322,11 @@ export const ManifestEditor = ({
/>
</div>
</div>
</div>
</section>
{/* Packages */}
<div className="card-md stack stack-md">
<h4 className="m-0">Packages</h4>
<section className="config-section">
<h4 className="config-section-title">Packages</h4>
<div className="form-group">
<label>Node.js Version</label>
@@ -435,11 +435,11 @@ export const ManifestEditor = ({
</button>
</div>
</div>
</div>
</section>
{/* Runtime User */}
<div className="card-md stack stack-md">
<h4 className="m-0">Runtime User</h4>
<section className="config-section">
<h4 className="config-section-title">Runtime User</h4>
<div className="form-row row-md">
<div className="form-group">
<label>User Name</label>
@@ -469,11 +469,11 @@ export const ManifestEditor = ({
/>
</div>
</div>
</div>
</section>
{/* Environment */}
<div className="card-md stack stack-md">
<h4 className="m-0">Environment Variables</h4>
<section className="config-section">
<h4 className="config-section-title">Environment Variables</h4>
<div className="stack stack-sm">
{envVars.map((ev, idx) => (
<div key={idx} className="form-row row-sm">
@@ -509,11 +509,11 @@ export const ManifestEditor = ({
<Icon name="add" size="sm" /> Add Env Var
</button>
</div>
</div>
</section>
{/* Build Scripts */}
<div className="card-md stack stack-md">
<h4 className="m-0">Build Scripts (run during docker build)</h4>
<section className="config-section">
<h4 className="config-section-title">Build Scripts (run during docker build)</h4>
<div className="stack stack-sm">
{buildScripts.map((script, idx) => (
<div
@@ -545,11 +545,11 @@ export const ManifestEditor = ({
<Icon name="add" size="sm" /> Add Build Script
</button>
</div>
</div>
</section>
{/* Startup Scripts */}
<div className="card-md stack stack-md">
<h4 className="m-0">
<section className="config-section">
<h4 className="config-section-title">
Startup Scripts (run when container starts)
</h4>
<div className="stack stack-sm">
@@ -583,11 +583,11 @@ export const ManifestEditor = ({
<Icon name="add" size="sm" /> Add Startup Script
</button>
</div>
</div>
</section>
{/* Mounts */}
<div className="card-md stack stack-md">
<h4 className="m-0">Mount Schema</h4>
<section className="config-section">
<h4 className="config-section-title">Mount Schema</h4>
<div className="stack stack-md">
{mounts.map((mount, idx) => (
<div
@@ -701,11 +701,11 @@ export const ManifestEditor = ({
<Icon name="add" size="sm" /> Add Mount
</button>
</div>
</div>
</section>
{/* Runtime */}
<div className="card-md stack stack-md">
<h4 className="m-0">Runtime</h4>
<section className="config-section">
<h4 className="config-section-title">Runtime</h4>
<div className="form-row row-md">
<div className="form-group">
<label>Command</label>
@@ -746,7 +746,7 @@ export const ManifestEditor = ({
tty
</label>
</div>
</div>
</section>
{/* Preview */}
<div className="card-md stack stack-md">