gabriel / musehub public
_new-repo.scss
349 lines 12.0 KB
Raw
sha256:9590cee1e0ccd6c76528f005b95d634d80f5019f0dcb7c371e149adc31d1fb65 refactor: enforce gRPC framing on all MWP wire traffic Sonnet 4.6 minor ⚠ breaking 155 days ago
1 // _new-repo.scss — New repository wizard (.nr-* prefix)
2
3 /* =========================================================================
4 New repository wizard — nr-* design system
5 Matches .ph-hero pattern: hero has side padding, inner has vertical padding.
6 ========================================================================= */
7
8 .nr-hero {
9 background: linear-gradient(135deg, rgba(88,166,255,0.05) 0%, transparent 60%);
10 border-bottom: 1px solid var(--border-subtle);
11 padding: 0 var(--space-4);
12 margin: 0;
13 }
14 .nr-hero-inner {
15 padding: 56px 0 48px;
16 max-width: none;
17 margin: 0;
18 width: 100%;
19 }
20 .nr-back-link {
21 display: inline-flex;
22 align-items: center;
23 gap: 5px;
24 font-size: 11px;
25 font-weight: 500;
26 color: var(--text-muted);
27 margin-bottom: var(--space-3);
28 opacity: 0.75;
29 transition: opacity 0.15s;
30 &:hover { opacity: 1; }
31 }
32
33 .nr-hero-eyebrow {
34 display: flex;
35 align-items: center;
36 gap: 7px;
37 font-size: 10px;
38 font-weight: 700;
39 text-transform: uppercase;
40 letter-spacing: 0.08em;
41 color: var(--text-muted);
42 margin-bottom: var(--space-3);
43 }
44 .nr-hero-title {
45 font-size: clamp(22px, 3vw, 30px);
46 font-weight: 700;
47 color: var(--text-primary);
48 margin: 0 0 var(--space-2);
49 line-height: 1.2;
50 }
51 .nr-hero-sub {
52 font-size: 13px;
53 color: var(--text-muted);
54 max-width: 580px;
55 line-height: 1.65;
56 margin: 0;
57 }
58
59 .nr-body {
60 padding: var(--space-5) var(--space-4) var(--space-8);
61 max-width: none;
62 margin: 0;
63 width: 100%;
64 box-sizing: border-box;
65 }
66
67 // ── Section cards ─────────────────────────────────────────────────────────────
68 .nr-section {
69 background: transparent;
70 border: 1px solid var(--border-subtle);
71 border-left: 3px solid var(--border-default);
72 border-radius: var(--radius-sm);
73 padding: var(--space-4);
74 margin-bottom: var(--space-4);
75 transition: border-left-color 0.2s;
76 &:focus-within { border-left-color: var(--color-accent); }
77 }
78 .nr-section-title {
79 display: flex; align-items: center; gap: 7px;
80 font-size: 10px; font-weight: 700; text-transform: uppercase;
81 letter-spacing: 0.08em; color: var(--text-muted);
82 margin: 0 0 var(--space-3);
83 }
84
85 // ── Fields ────────────────────────────────────────────────────────────────────
86 .nr-field { margin-bottom: var(--space-3); &:last-child { margin-bottom: 0; } }
87
88 .nr-label {
89 display: block; font-size: 13px; font-weight: 600;
90 color: var(--text-primary); margin-bottom: 4px;
91 }
92 .nr-req { color: var(--color-accent); margin-left: 2px; }
93
94 .nr-desc {
95 font-size: 12px; color: var(--text-muted);
96 margin: 0 0 var(--space-2); line-height: 1.55;
97 }
98 .nr-link {
99 color: var(--color-accent); text-decoration: none;
100 &:hover { opacity: 0.8; text-decoration: none; }
101 }
102
103 // ── Inputs ────────────────────────────────────────────────────────────────────
104 .nr-input {
105 width: 100%; box-sizing: border-box;
106 background: transparent;
107 border: 1px solid var(--border-default);
108 border-radius: var(--radius-sm);
109 padding: 8px 12px;
110 font-size: 13px; font-family: var(--font-mono); color: var(--text-primary);
111 outline: none; transition: border-color 0.15s;
112 &::placeholder { color: var(--text-muted); font-family: var(--font-sans); }
113 &:focus { border-color: var(--color-accent); }
114 }
115 .nr-input--sm { max-width: 240px; }
116 .nr-textarea { resize: vertical; min-height: 64px; font-family: var(--font-sans); }
117
118 // ── Owner / name row ──────────────────────────────────────────────────────────
119 .nr-owner-row { display: flex; align-items: center; gap: var(--space-2); }
120 .nr-owner-input { flex: 0 0 200px; }
121 .nr-name-input { flex: 1; }
122 .nr-sep { font-size: 22px; font-weight: 300; color: var(--text-muted); flex-shrink: 0; }
123
124 #name-check { font-size: 12px; flex-shrink: 0; }
125 .nr-spin { animation: nr-spin 0.7s linear infinite; color: var(--color-accent); }
126 @keyframes nr-spin { to { transform: rotate(360deg); } }
127
128 // ── Custom select ─────────────────────────────────────────────────────────────
129 .nr-select-wrap {
130 position: relative; display: inline-flex; width: 100%; max-width: 440px;
131 &.nr-select-wrap--sm { max-width: 300px; }
132 }
133 .nr-select-chevron {
134 position: absolute; right: 10px; top: 50%; transform: translateY(-50%);
135 pointer-events: none; color: var(--text-muted);
136 }
137 .nr-select {
138 appearance: none; width: 100%; background: transparent;
139 border: 1px solid var(--border-default); border-radius: var(--radius-sm);
140 padding: 8px 34px 8px 12px;
141 font-size: 13px; color: var(--text-primary);
142 cursor: pointer; outline: none; transition: border-color 0.15s;
143 &:focus { border-color: var(--color-accent); }
144 }
145
146 // ── Domain hint ───────────────────────────────────────────────────────────────
147 .nr-domain-hint {
148 display: flex; align-items: center; gap: 6px;
149 margin-top: var(--space-2); font-size: 12px; color: var(--text-muted);
150 }
151
152 .nr-domain-locked {
153 display: flex;
154 align-items: center;
155 gap: var(--space-3);
156 padding: var(--space-2) var(--space-3);
157 background: transparent;
158 border: 1px solid var(--border-subtle);
159 border-left: 3px solid var(--color-accent);
160 border-radius: var(--radius-sm);
161 font-size: 12px;
162
163 &__badge {
164 display: inline-flex;
165 align-items: center;
166 gap: 6px;
167 font-weight: 600;
168 color: var(--text-primary);
169 font-family: var(--font-mono);
170 font-size: 11px;
171 }
172
173 &__meta {
174 color: var(--text-muted);
175 font-size: 11px;
176 flex: 1;
177 }
178 }
179
180 // ── Visibility cards ──────────────────────────────────────────────────────────
181 .nr-vis-grid {
182 display: grid; grid-template-columns: 1fr 1fr; gap: 10px;
183 @media (max-width: 500px) { grid-template-columns: 1fr; }
184 }
185 .nr-vis-card {
186 display: flex; gap: var(--space-3); align-items: flex-start;
187 padding: var(--space-3); cursor: pointer;
188 background: transparent;
189 border: 1px solid var(--border-subtle);
190 border-left: 3px solid transparent;
191 border-radius: var(--radius-sm);
192 transition: border-left-color 0.15s, background 0.15s;
193 input[type="radio"] { display: none; }
194 &.nr-vis-card--selected, &[aria-checked="true"] {
195 border-left-color: var(--color-accent);
196 background: rgba(255,255,255,0.02);
197 }
198 &:hover { background: rgba(255,255,255,0.02); }
199 }
200 .nr-vis-icon {
201 width: 34px; height: 34px; border-radius: 50%;
202 background: rgba(88,166,255,0.1); color: #58a6ff;
203 display: flex; align-items: center; justify-content: center; flex-shrink: 0;
204 &--private { background: rgba(188,140,255,0.1); color: #bc8cff; }
205 }
206 .nr-vis-title { font-size: 13px; font-weight: 600; color: var(--text-primary); }
207 .nr-vis-desc { font-size: 12px; color: var(--text-muted); margin-top: 3px; line-height: 1.4; }
208
209 // ── Tag input ─────────────────────────────────────────────────────────────────
210 .nr-tag-input {
211 display: flex; flex-wrap: wrap; gap: 6px; align-items: center;
212 background: transparent; border: 1px solid var(--border-default);
213 border-radius: var(--radius-sm); padding: 6px 10px; cursor: text; min-height: 40px;
214 &:focus-within { border-color: var(--color-accent); }
215 }
216 .nr-tag {
217 display: inline-flex; align-items: center; gap: 5px;
218 font-size: 12px; font-family: var(--font-mono);
219 background: rgba(88,166,255,0.1); color: #58a6ff;
220 border: 1px solid rgba(88,166,255,0.22);
221 padding: 2px 8px 2px 10px; border-radius: 100px;
222 }
223 .nr-tag-remove {
224 display: flex; align-items: center;
225 background: none; border: none; cursor: pointer;
226 color: inherit; opacity: 0.55; padding: 0;
227 &:hover { opacity: 1; }
228 }
229 .nr-tag-text {
230 background: none; border: none; outline: none;
231 font-size: 13px; color: var(--text-primary); flex: 1; min-width: 120px;
232 &::placeholder { color: var(--text-muted); }
233 }
234
235 // ── Toggle switch ─────────────────────────────────────────────────────────────
236 .nr-toggle-row { display: flex; align-items: flex-start; gap: var(--space-3); }
237 .nr-toggle {
238 display: flex; align-items: center; cursor: pointer; flex-shrink: 0; margin-top: 2px;
239 input[type="checkbox"] { display: none; }
240 input[type="checkbox"]:checked + .nr-toggle__track { background: var(--color-accent); }
241 input[type="checkbox"]:checked + .nr-toggle__track .nr-toggle__thumb { transform: translateX(16px); }
242 }
243 .nr-toggle__track {
244 width: 36px; height: 20px; border-radius: 10px;
245 background: var(--border-default); position: relative; transition: background 0.2s;
246 }
247 .nr-toggle__thumb {
248 width: 14px; height: 14px; border-radius: 50%;
249 background: white; position: absolute; top: 3px; left: 3px; transition: transform 0.2s;
250 }
251 .nr-toggle-label { font-size: 13px; font-weight: 600; color: var(--text-primary); }
252 .nr-toggle-desc { font-size: 12px; color: var(--text-muted); margin-top: 3px; line-height: 1.5; }
253
254 .nr-branch-row {
255 margin-top: var(--space-3); padding-top: var(--space-3);
256 border-top: 1px solid var(--border-subtle);
257 }
258
259 // ── Keyboard shortcuts ────────────────────────────────────────────────────────
260 .nr-kbd {
261 font-size: 11px; font-family: var(--font-mono);
262 padding: 1px 5px; background: transparent;
263 border: 1px solid var(--border-default); border-radius: 3px;
264 color: var(--text-secondary);
265 }
266
267 // ── Actions (match mcp-hero-btn / dd-hero-btn theme) ──────────────────────────
268 .nr-actions { display: flex; align-items: center; gap: var(--space-3); margin-top: var(--space-2); }
269 .nr-btn {
270 display: inline-flex; align-items: center; gap: 6px;
271 padding: 7px 16px;
272 border-radius: var(--radius-sm);
273 font-size: 13px; font-weight: 500; line-height: 1;
274 white-space: nowrap; text-decoration: none;
275 cursor: pointer; transition: background 0.15s, border-color 0.15s, color 0.15s;
276 svg { flex-shrink: 0; }
277
278 &--primary {
279 background: rgba(88, 166, 255, 0.12);
280 border: 1px solid rgba(88, 166, 255, 0.4);
281 color: var(--color-accent);
282 &:hover {
283 background: rgba(88, 166, 255, 0.2);
284 border-color: rgba(88, 166, 255, 0.7);
285 color: #79c0ff;
286 }
287 &:disabled { opacity: 0.5; cursor: default; }
288 }
289
290 &--ghost {
291 background: transparent;
292 border: 1px solid var(--border-subtle);
293 color: var(--text-muted);
294 &:hover {
295 background: rgba(255, 255, 255, 0.03);
296 border-color: var(--border-default);
297 color: var(--text-secondary);
298 }
299 }
300 }
301 .nr-submit-error { color: var(--color-danger, #f85149); font-size: 13px; }
302
303 // ── Responsive ────────────────────────────────────────────────────────────────
304
305 @media (max-width: 768px) {
306 .nr-layout {
307 grid-template-columns: 1fr;
308 }
309
310 .nr-sidebar {
311 display: none;
312 }
313
314 .nr-step-nav {
315 flex-direction: column;
316 gap: var(--space-2);
317 }
318
319 .nr-vis-grid {
320 grid-template-columns: 1fr;
321 }
322
323 .nr-form-row {
324 flex-direction: column;
325 gap: var(--space-2);
326 }
327
328 .nr-preview-pane {
329 display: none;
330 }
331 }
332
333 @media (max-width: 480px) {
334 .nr-hero {
335 padding: var(--space-4) var(--space-3);
336 }
337
338 .nr-card {
339 padding: var(--space-3);
340 }
341
342 .nr-btn-row {
343 flex-direction: column;
344 }
345
346 .nr-field label {
347 font-size: 12px;
348 }
349 }
File History 1 commit
sha256:9590cee1e0ccd6c76528f005b95d634d80f5019f0dcb7c371e149adc31d1fb65 refactor: enforce gRPC framing on all MWP wire traffic Sonnet 4.6 minor ⚠ 155 days ago