Spaces:
Running
Running
Improve public setup code copy widget
Browse files- web/src/components/Locked.tsx +11 -2
- web/src/styles.css +6 -4
web/src/components/Locked.tsx
CHANGED
|
@@ -17,7 +17,11 @@ api.duplicate_repo(
|
|
| 17 |
repo_type="space",
|
| 18 |
private=True,
|
| 19 |
space_volumes=[
|
| 20 |
-
Volume(
|
|
|
|
|
|
|
|
|
|
|
|
|
| 21 |
],
|
| 22 |
)`;
|
| 23 |
const [copied, setCopied] = useState(false);
|
|
@@ -41,7 +45,12 @@ api.duplicate_repo(
|
|
| 41 |
</p>
|
| 42 |
<div className="locked-cmd">
|
| 43 |
<pre><code>{cmd}</code></pre>
|
| 44 |
-
<button className="
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 45 |
</div>
|
| 46 |
|
| 47 |
<h3>Is this your Space?</h3>
|
|
|
|
| 17 |
repo_type="space",
|
| 18 |
private=True,
|
| 19 |
space_volumes=[
|
| 20 |
+
Volume(
|
| 21 |
+
type="bucket",
|
| 22 |
+
source=bucket_id,
|
| 23 |
+
mount_path="/data",
|
| 24 |
+
),
|
| 25 |
],
|
| 26 |
)`;
|
| 27 |
const [copied, setCopied] = useState(false);
|
|
|
|
| 45 |
</p>
|
| 46 |
<div className="locked-cmd">
|
| 47 |
<pre><code>{cmd}</code></pre>
|
| 48 |
+
<button className="locked-copy" onClick={copy} aria-label="Copy setup code" title={copied ? 'Copied' : 'Copy'}>
|
| 49 |
+
<svg viewBox="0 0 24 24" aria-hidden="true">
|
| 50 |
+
<rect x="9" y="8" width="10" height="12" rx="2" />
|
| 51 |
+
<path d="M6 16H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1" />
|
| 52 |
+
</svg>
|
| 53 |
+
</button>
|
| 54 |
</div>
|
| 55 |
|
| 56 |
<h3>Is this your Space?</h3>
|
web/src/styles.css
CHANGED
|
@@ -138,15 +138,17 @@ body {
|
|
| 138 |
|
| 139 |
/* public-space locked screen */
|
| 140 |
.locked { min-height: 100vh; display: flex; align-items: center; justify-content: center; padding: 24px; background: var(--bg); }
|
| 141 |
-
.locked-card { max-width:
|
| 142 |
.locked-emoji { font-size: 34px; }
|
| 143 |
.locked-card h1 { margin: 8px 0 4px; font-size: 22px; }
|
| 144 |
.locked-card h3 { margin: 22px 0 6px; font-size: 14px; }
|
| 145 |
.locked-lead { color: var(--text); font-size: 14px; line-height: 1.55; }
|
| 146 |
.locked-sub { color: var(--muted); font-size: 13px; line-height: 1.5; }
|
| 147 |
-
.locked-cmd {
|
| 148 |
-
.locked-cmd pre {
|
| 149 |
-
.locked-
|
|
|
|
|
|
|
| 150 |
|
| 151 |
/* terminal "process exited" overlay */
|
| 152 |
/* Non-blocking banner so the agent's last output (e.g. a login error) stays readable. */
|
|
|
|
| 138 |
|
| 139 |
/* public-space locked screen */
|
| 140 |
.locked { min-height: 100vh; display: flex; align-items: center; justify-content: center; padding: 24px; background: var(--bg); }
|
| 141 |
+
.locked-card { max-width: 920px; width: 100%; background: var(--panel); border: 1px solid var(--border); border-radius: 16px; padding: 32px 34px; box-shadow: 0 12px 40px rgba(0,0,0,0.22); }
|
| 142 |
.locked-emoji { font-size: 34px; }
|
| 143 |
.locked-card h1 { margin: 8px 0 4px; font-size: 22px; }
|
| 144 |
.locked-card h3 { margin: 22px 0 6px; font-size: 14px; }
|
| 145 |
.locked-lead { color: var(--text); font-size: 14px; line-height: 1.55; }
|
| 146 |
.locked-sub { color: var(--muted); font-size: 13px; line-height: 1.5; }
|
| 147 |
+
.locked-cmd { position: relative; margin-top: 8px; }
|
| 148 |
+
.locked-cmd pre { margin: 0; overflow-x: hidden; white-space: pre-wrap; overflow-wrap: anywhere; background: var(--panel-2); border: 1px solid var(--border); border-radius: 8px; padding: 42px 14px 14px; font-size: 12px; line-height: 1.5; }
|
| 149 |
+
.locked-copy { position: absolute; top: 10px; right: 10px; width: 30px; height: 30px; border: 1px solid var(--border); border-radius: 8px; background: var(--panel); color: var(--muted); cursor: pointer; display: inline-flex; align-items: center; justify-content: center; }
|
| 150 |
+
.locked-copy:hover { color: var(--text); border-color: var(--border-strong); }
|
| 151 |
+
.locked-copy svg { width: 16px; height: 16px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linejoin: round; }
|
| 152 |
|
| 153 |
/* terminal "process exited" overlay */
|
| 154 |
/* Non-blocking banner so the agent's last output (e.g. a login error) stays readable. */
|