buddy-builder 1.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,340 @@
1
+ /* ═══ Settings View (VS Code style) ════════════════════════════ */
2
+
3
+ #settings-view {
4
+ flex: 1;
5
+ display: flex;
6
+ flex-direction: column;
7
+ min-height: 0;
8
+ background: var(--bg-0);
9
+ }
10
+
11
+ /* ─── Search bar ─── */
12
+
13
+ .sv-search-bar {
14
+ display: flex;
15
+ align-items: center;
16
+ gap: 0;
17
+ padding: 8px 16px;
18
+ border-bottom: 1px solid var(--border);
19
+ flex-shrink: 0;
20
+ position: relative;
21
+ }
22
+
23
+ .sv-search-icon {
24
+ position: absolute;
25
+ left: 26px;
26
+ color: var(--text-muted);
27
+ pointer-events: none;
28
+ }
29
+
30
+ .sv-search-input {
31
+ flex: 1;
32
+ padding: 6px 12px 6px 32px;
33
+ border: 1px solid var(--border);
34
+ border-radius: var(--radius);
35
+ background: var(--bg-2);
36
+ color: var(--text);
37
+ font-size: 13px;
38
+ font-family: inherit;
39
+ outline: none;
40
+ transition: border-color 0.15s;
41
+ }
42
+
43
+ .sv-search-input:focus {
44
+ border-color: var(--accent);
45
+ }
46
+
47
+ .sv-search-input::placeholder {
48
+ color: var(--text-muted);
49
+ }
50
+
51
+ .sv-search-clear {
52
+ position: absolute;
53
+ right: 20px;
54
+ background: none;
55
+ border: none;
56
+ color: var(--text-muted);
57
+ font-size: 16px;
58
+ cursor: pointer;
59
+ padding: 0 4px;
60
+ line-height: 1;
61
+ }
62
+
63
+ .sv-search-clear:hover {
64
+ color: var(--text);
65
+ }
66
+
67
+ .sv-autosave-status {
68
+ position: absolute;
69
+ right: 16px;
70
+ font-size: 11px;
71
+ color: var(--success);
72
+ white-space: nowrap;
73
+ pointer-events: none;
74
+ animation: fadeIn 0.2s ease;
75
+ }
76
+
77
+ /* ─── Body (nav + content) ─── */
78
+
79
+ .sv-body {
80
+ flex: 1;
81
+ display: flex;
82
+ min-height: 0;
83
+ }
84
+
85
+ /* ─── Category nav (left sidebar) ─── */
86
+
87
+ .sv-nav {
88
+ width: 180px;
89
+ flex-shrink: 0;
90
+ padding: 12px 0;
91
+ border-right: 1px solid var(--border-subtle);
92
+ overflow-y: auto;
93
+ }
94
+
95
+ .sv-nav-item {
96
+ display: block;
97
+ width: 100%;
98
+ padding: 6px 20px;
99
+ border: none;
100
+ background: transparent;
101
+ color: var(--text-muted);
102
+ font-size: 13px;
103
+ font-family: inherit;
104
+ text-align: left;
105
+ cursor: pointer;
106
+ transition: color 0.12s, background 0.12s;
107
+ border-left: 2px solid transparent;
108
+ }
109
+
110
+ .sv-nav-item:hover {
111
+ color: var(--text);
112
+ background: var(--hover-bg);
113
+ }
114
+
115
+ .sv-nav-item.active {
116
+ color: var(--text);
117
+ border-left-color: var(--accent);
118
+ background: var(--hover-bg);
119
+ }
120
+
121
+ /* ─── Content (scrollable settings list) ─── */
122
+
123
+ .sv-content {
124
+ flex: 1;
125
+ overflow-y: auto;
126
+ padding: 0 0 40px;
127
+ }
128
+
129
+ .sv-category-header {
130
+ font-size: 20px;
131
+ font-weight: 600;
132
+ color: var(--text);
133
+ padding: 24px 28px 8px;
134
+ letter-spacing: -0.2px;
135
+ }
136
+
137
+ .sv-no-results {
138
+ padding: 40px 28px;
139
+ color: var(--text-muted);
140
+ font-size: 14px;
141
+ }
142
+
143
+ /* ─── Setting item ─── */
144
+
145
+ .sv-item {
146
+ padding: 14px 28px;
147
+ border-bottom: 1px solid var(--border-subtle);
148
+ }
149
+
150
+ .sv-item:last-child {
151
+ border-bottom: none;
152
+ }
153
+
154
+ .sv-item-title {
155
+ font-size: 13px;
156
+ font-weight: 600;
157
+ color: var(--text);
158
+ margin-bottom: 2px;
159
+ }
160
+
161
+ .sv-item-desc {
162
+ font-size: 13px;
163
+ color: var(--text-secondary);
164
+ margin-bottom: 8px;
165
+ line-height: 1.4;
166
+ }
167
+
168
+ .sv-item-control {
169
+ max-width: 420px;
170
+ }
171
+
172
+ /* ─── Highlight for search matches ─── */
173
+
174
+ .sv-highlight {
175
+ background: rgba(236, 178, 46, 0.3);
176
+ color: var(--text);
177
+ border-radius: 2px;
178
+ padding: 0 1px;
179
+ }
180
+
181
+ /* ─── Text input ─── */
182
+
183
+ .sv-text-input {
184
+ width: 100%;
185
+ padding: 5px 8px;
186
+ border: 1px solid var(--border);
187
+ border-radius: var(--radius-sm);
188
+ background: var(--bg-2);
189
+ color: var(--text);
190
+ font-family: var(--font-mono);
191
+ font-size: 13px;
192
+ outline: none;
193
+ transition: border-color 0.15s;
194
+ }
195
+
196
+ .sv-text-input:focus {
197
+ border-color: var(--accent);
198
+ }
199
+
200
+ .sv-text-input::placeholder {
201
+ color: var(--text-muted);
202
+ font-family: var(--font-sans);
203
+ }
204
+
205
+ /* ─── Select (dropdown) ─── */
206
+
207
+ .sv-select {
208
+ padding: 5px 28px 5px 8px;
209
+ border: 1px solid var(--border);
210
+ border-radius: var(--radius-sm);
211
+ background: var(--bg-2);
212
+ color: var(--text);
213
+ font-size: 13px;
214
+ font-family: inherit;
215
+ outline: none;
216
+ cursor: pointer;
217
+ appearance: none;
218
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 10 10'%3E%3Cpath d='M1 3l4 4 4-4' fill='none' stroke='%2372767d' stroke-width='1.5'/%3E%3C/svg%3E");
219
+ background-repeat: no-repeat;
220
+ background-position: right 8px center;
221
+ min-width: 200px;
222
+ transition: border-color 0.15s;
223
+ }
224
+
225
+ .sv-select:focus {
226
+ border-color: var(--accent);
227
+ }
228
+
229
+ /* ─── Toggle switch ─── */
230
+
231
+ .sv-toggle-row {
232
+ display: flex;
233
+ align-items: center;
234
+ gap: 10px;
235
+ cursor: pointer;
236
+ }
237
+
238
+ .sv-toggle-switch {
239
+ position: relative;
240
+ width: 40px;
241
+ height: 22px;
242
+ border-radius: 11px;
243
+ border: none;
244
+ background: var(--border-strong);
245
+ cursor: pointer;
246
+ flex-shrink: 0;
247
+ padding: 0;
248
+ transition: background 0.15s;
249
+ }
250
+
251
+ .sv-toggle-switch.active {
252
+ background: var(--accent);
253
+ }
254
+
255
+ .sv-toggle-knob {
256
+ position: absolute;
257
+ top: 3px;
258
+ left: 3px;
259
+ width: 16px;
260
+ height: 16px;
261
+ border-radius: 50%;
262
+ background: #fff;
263
+ transition: transform 0.15s;
264
+ }
265
+
266
+ .sv-toggle-switch.active .sv-toggle-knob {
267
+ transform: translateX(18px);
268
+ }
269
+
270
+ .sv-toggle-label {
271
+ font-size: 13px;
272
+ color: var(--text-secondary);
273
+ user-select: none;
274
+ }
275
+
276
+ /* ─── Browse row ─── */
277
+
278
+ .sv-browse-row {
279
+ display: flex;
280
+ gap: 6px;
281
+ align-items: center;
282
+ }
283
+
284
+ .sv-browse-row .sv-text-input {
285
+ flex: 1;
286
+ min-width: 0;
287
+ }
288
+
289
+ .sv-browse-btn {
290
+ padding: 5px 12px;
291
+ border: 1px solid var(--border);
292
+ border-radius: var(--radius-sm);
293
+ background: var(--bg-2);
294
+ color: var(--text-secondary);
295
+ font-size: 13px;
296
+ font-family: inherit;
297
+ cursor: pointer;
298
+ white-space: nowrap;
299
+ transition: background 0.15s, color 0.15s;
300
+ }
301
+
302
+ .sv-browse-btn:hover {
303
+ background: var(--bg-3);
304
+ color: var(--text);
305
+ }
306
+
307
+ /* ─── About section ─── */
308
+
309
+ .sv-about {
310
+ display: flex;
311
+ align-items: center;
312
+ gap: 16px;
313
+ padding: 20px 28px;
314
+ }
315
+
316
+ .sv-about-logo {
317
+ width: 56px;
318
+ height: 56px;
319
+ border-radius: 14px;
320
+ box-shadow: 0 4px 16px rgba(0, 168, 232, 0.15);
321
+ }
322
+
323
+ .sv-about-name {
324
+ font-size: 16px;
325
+ font-weight: 700;
326
+ color: var(--text);
327
+ }
328
+
329
+ .sv-about-version {
330
+ font-size: 13px;
331
+ color: var(--text-muted);
332
+ margin-top: 2px;
333
+ }
334
+
335
+ .sv-about-tagline {
336
+ font-size: 12px;
337
+ color: var(--text-muted);
338
+ margin-top: 2px;
339
+ opacity: 0.7;
340
+ }