codexmate 0.0.28 → 0.0.30
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.
- package/cli/builtin-proxy.js +107 -2
- package/cli/config-bootstrap.js +30 -12
- package/cli/config-health.js +117 -1
- package/cli/local-bridge.js +324 -0
- package/cli/openai-bridge.js +195 -31
- package/cli.js +245 -28
- package/lib/cli-webhook.js +126 -0
- package/package.json +1 -1
- package/web-ui/app.js +28 -8
- package/web-ui/index.html +1 -0
- package/web-ui/logic.codex.mjs +13 -0
- package/web-ui/modules/app.computed.dashboard.mjs +25 -2
- package/web-ui/modules/app.computed.session.mjs +22 -17
- package/web-ui/modules/app.methods.claude-config.mjs +12 -2
- package/web-ui/modules/app.methods.codex-config.mjs +25 -0
- package/web-ui/modules/app.methods.index.mjs +2 -0
- package/web-ui/modules/app.methods.navigation.mjs +39 -8
- package/web-ui/modules/app.methods.providers.mjs +125 -8
- package/web-ui/modules/app.methods.session-actions.mjs +1 -1
- package/web-ui/modules/app.methods.session-browser.mjs +1 -1
- package/web-ui/modules/app.methods.session-trash.mjs +3 -4
- package/web-ui/modules/app.methods.startup-claude.mjs +1 -0
- package/web-ui/modules/app.methods.webhook.mjs +79 -0
- package/web-ui/modules/i18n.dict.mjs +1109 -72
- package/web-ui/modules/i18n.mjs +9 -3
- package/web-ui/modules/skills.methods.mjs +1 -0
- package/web-ui/partials/index/layout-header.html +25 -0
- package/web-ui/partials/index/modals-basic.html +0 -3
- package/web-ui/partials/index/panel-config-claude.html +8 -2
- package/web-ui/partials/index/panel-config-codex.html +28 -3
- package/web-ui/partials/index/panel-dashboard.html +33 -0
- package/web-ui/partials/index/panel-market.html +3 -3
- package/web-ui/partials/index/panel-plugins.html +2 -2
- package/web-ui/partials/index/panel-sessions.html +1 -9
- package/web-ui/partials/index/panel-settings.html +71 -134
- package/web-ui/partials/index/panel-trash.html +88 -0
- package/web-ui/session-helpers.mjs +20 -2
- package/web-ui/styles/dashboard.css +132 -0
- package/web-ui/styles/docs-panel.css +63 -39
- package/web-ui/styles/layout-shell.css +54 -34
- package/web-ui/styles/plugins-panel.css +121 -80
- package/web-ui/styles/sessions-list.css +41 -43
- package/web-ui/styles/sessions-preview.css +34 -38
- package/web-ui/styles/sessions-toolbar-trash.css +31 -27
- package/web-ui/styles/settings-panel.css +197 -33
- package/web-ui/styles/skills-list.css +12 -10
- package/web-ui/styles/skills-market.css +67 -44
- package/web-ui/styles/trash-panel.css +90 -0
- package/web-ui/styles/webhook.css +81 -0
- package/web-ui/styles.css +2 -0
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
.session-preview.active {
|
|
2
2
|
box-shadow: var(--shadow-float);
|
|
3
|
-
transform: translateX(0);
|
|
4
3
|
}
|
|
5
4
|
|
|
6
5
|
.session-preview-scroll {
|
|
@@ -23,7 +22,7 @@
|
|
|
23
22
|
}
|
|
24
23
|
|
|
25
24
|
.session-preview-header {
|
|
26
|
-
padding:
|
|
25
|
+
padding: 14px var(--spacing-sm);
|
|
27
26
|
border-bottom: 1px solid var(--color-border-soft);
|
|
28
27
|
display: flex;
|
|
29
28
|
align-items: flex-start;
|
|
@@ -32,8 +31,8 @@
|
|
|
32
31
|
position: sticky;
|
|
33
32
|
top: 0;
|
|
34
33
|
z-index: 2;
|
|
35
|
-
background:
|
|
36
|
-
backdrop-filter: blur(
|
|
34
|
+
background: var(--color-surface-elevated);
|
|
35
|
+
backdrop-filter: blur(12px);
|
|
37
36
|
}
|
|
38
37
|
|
|
39
38
|
.session-preview-header > div:first-child {
|
|
@@ -100,17 +99,17 @@
|
|
|
100
99
|
.session-preview-body {
|
|
101
100
|
flex: 1;
|
|
102
101
|
min-height: 0;
|
|
103
|
-
padding: var(--spacing-
|
|
102
|
+
padding: var(--spacing-md);
|
|
104
103
|
display: flex;
|
|
105
104
|
flex-direction: column;
|
|
106
|
-
gap:
|
|
105
|
+
gap: 12px;
|
|
107
106
|
}
|
|
108
107
|
|
|
109
108
|
.session-preview-messages {
|
|
110
109
|
min-width: 0;
|
|
111
110
|
display: flex;
|
|
112
111
|
flex-direction: column;
|
|
113
|
-
gap:
|
|
112
|
+
gap: 12px;
|
|
114
113
|
contain: layout style;
|
|
115
114
|
}
|
|
116
115
|
|
|
@@ -122,9 +121,9 @@
|
|
|
122
121
|
width: 44px;
|
|
123
122
|
height: auto;
|
|
124
123
|
border-radius: 12px;
|
|
125
|
-
border: 1px solid
|
|
126
|
-
background:
|
|
127
|
-
box-shadow:
|
|
124
|
+
border: 1px solid var(--color-border-soft);
|
|
125
|
+
background: var(--color-surface-elevated);
|
|
126
|
+
box-shadow: var(--shadow-card);
|
|
128
127
|
padding: 6px 4px 28px;
|
|
129
128
|
z-index: 3;
|
|
130
129
|
}
|
|
@@ -136,7 +135,7 @@
|
|
|
136
135
|
bottom: 32px;
|
|
137
136
|
width: 2px;
|
|
138
137
|
transform: translateX(-50%);
|
|
139
|
-
background:
|
|
138
|
+
background: var(--color-border-soft);
|
|
140
139
|
border-radius: 999px;
|
|
141
140
|
}
|
|
142
141
|
|
|
@@ -146,27 +145,24 @@
|
|
|
146
145
|
width: 10px;
|
|
147
146
|
height: 10px;
|
|
148
147
|
border-radius: 50%;
|
|
149
|
-
border: 1px solid
|
|
150
|
-
background:
|
|
148
|
+
border: 1px solid var(--color-border-strong);
|
|
149
|
+
background: var(--color-surface);
|
|
151
150
|
transform: translate(-50%, -50%);
|
|
152
151
|
cursor: pointer;
|
|
153
152
|
padding: 0;
|
|
154
|
-
transition:
|
|
155
|
-
will-change: auto;
|
|
153
|
+
transition: border-color var(--transition-fast) var(--ease-spring), background var(--transition-fast) var(--ease-spring), box-shadow var(--transition-fast) var(--ease-spring);
|
|
156
154
|
}
|
|
157
155
|
|
|
158
156
|
.session-timeline-node:hover {
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
box-shadow: none;
|
|
157
|
+
border-color: var(--color-brand);
|
|
158
|
+
background: var(--color-surface);
|
|
159
|
+
box-shadow: 0 0 0 3px rgba(210, 107, 90, 0.15);
|
|
163
160
|
}
|
|
164
161
|
|
|
165
162
|
.session-timeline-node.active {
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
box-shadow: none;
|
|
163
|
+
border-color: var(--color-brand);
|
|
164
|
+
background: var(--color-brand);
|
|
165
|
+
box-shadow: 0 0 0 3px rgba(210, 107, 90, 0.2);
|
|
170
166
|
}
|
|
171
167
|
|
|
172
168
|
.session-timeline-current {
|
|
@@ -184,18 +180,18 @@
|
|
|
184
180
|
}
|
|
185
181
|
|
|
186
182
|
.session-msg {
|
|
187
|
-
border-radius:
|
|
188
|
-
padding: 10px
|
|
189
|
-
border: 1px solid
|
|
190
|
-
background:
|
|
183
|
+
border-radius: var(--radius-md);
|
|
184
|
+
padding: 10px 14px 10px 20px;
|
|
185
|
+
border: 1px solid var(--color-border-soft);
|
|
186
|
+
background: var(--color-surface);
|
|
191
187
|
position: relative;
|
|
192
|
-
box-shadow:
|
|
188
|
+
box-shadow: var(--shadow-subtle);
|
|
193
189
|
contain: layout style paint;
|
|
194
190
|
}
|
|
195
191
|
|
|
196
192
|
.session-msg.user {
|
|
197
|
-
border-color: rgba(210, 107, 90, 0.
|
|
198
|
-
background: rgba(210, 107, 90, 0.
|
|
193
|
+
border-color: rgba(210, 107, 90, 0.3);
|
|
194
|
+
background: rgba(210, 107, 90, 0.05);
|
|
199
195
|
}
|
|
200
196
|
|
|
201
197
|
.session-msg::before {
|
|
@@ -206,15 +202,15 @@
|
|
|
206
202
|
bottom: 10px;
|
|
207
203
|
width: 3px;
|
|
208
204
|
border-radius: 999px;
|
|
209
|
-
background:
|
|
205
|
+
background: var(--color-border-soft);
|
|
210
206
|
}
|
|
211
207
|
|
|
212
208
|
.session-msg.user::before {
|
|
213
|
-
background:
|
|
209
|
+
background: var(--color-brand);
|
|
214
210
|
}
|
|
215
211
|
|
|
216
212
|
.session-msg.assistant::before {
|
|
217
|
-
background: rgba(90, 139, 106, 0.
|
|
213
|
+
background: rgba(90, 139, 106, 0.5);
|
|
218
214
|
}
|
|
219
215
|
|
|
220
216
|
.session-msg-header {
|
|
@@ -249,7 +245,7 @@
|
|
|
249
245
|
|
|
250
246
|
.session-msg-content {
|
|
251
247
|
font-size: var(--font-size-secondary);
|
|
252
|
-
line-height: 1.
|
|
248
|
+
line-height: 1.6;
|
|
253
249
|
color: var(--color-text-primary);
|
|
254
250
|
white-space: pre-wrap;
|
|
255
251
|
word-break: break-word;
|
|
@@ -270,11 +266,11 @@
|
|
|
270
266
|
|
|
271
267
|
.session-preview-empty::before {
|
|
272
268
|
content: "";
|
|
273
|
-
width:
|
|
274
|
-
height:
|
|
269
|
+
width: 40px;
|
|
270
|
+
height: 40px;
|
|
275
271
|
border-radius: 50%;
|
|
276
|
-
background:
|
|
277
|
-
|
|
272
|
+
background: linear-gradient(135deg, var(--color-brand) 0%, var(--color-brand-dark) 100%);
|
|
273
|
+
opacity: 0.18;
|
|
278
274
|
}
|
|
279
275
|
|
|
280
276
|
@media (max-width: 1100px) {
|
|
@@ -32,9 +32,9 @@
|
|
|
32
32
|
justify-content: flex-end;
|
|
33
33
|
gap: var(--spacing-xs);
|
|
34
34
|
margin-top: -1px;
|
|
35
|
-
padding-top:
|
|
35
|
+
padding-top: 6px;
|
|
36
36
|
margin-bottom: var(--spacing-xs);
|
|
37
|
-
border-top: 1px
|
|
37
|
+
border-top: 1px solid var(--color-border-soft);
|
|
38
38
|
}
|
|
39
39
|
|
|
40
40
|
.session-filter-chips {
|
|
@@ -50,21 +50,21 @@
|
|
|
50
50
|
align-items: center;
|
|
51
51
|
gap: 6px;
|
|
52
52
|
max-width: 100%;
|
|
53
|
-
padding:
|
|
53
|
+
padding: 5px 10px;
|
|
54
54
|
border-radius: 999px;
|
|
55
55
|
border: 1px solid var(--color-border-soft);
|
|
56
|
-
background:
|
|
56
|
+
background: var(--color-surface);
|
|
57
57
|
color: var(--color-text-secondary);
|
|
58
58
|
font-size: var(--font-size-caption);
|
|
59
59
|
font-weight: var(--font-weight-secondary);
|
|
60
60
|
cursor: pointer;
|
|
61
61
|
transition: all var(--transition-fast) var(--ease-spring);
|
|
62
|
-
box-shadow: inset 0 1px 2px rgba(31, 26, 23, 0.04);
|
|
63
62
|
min-width: 0;
|
|
64
63
|
}
|
|
65
64
|
|
|
66
65
|
.session-filter-chip:hover {
|
|
67
|
-
border-color: var(--color-
|
|
66
|
+
border-color: var(--color-brand);
|
|
67
|
+
background: var(--color-surface-alt);
|
|
68
68
|
transform: translateY(-1px);
|
|
69
69
|
}
|
|
70
70
|
|
|
@@ -88,30 +88,36 @@
|
|
|
88
88
|
width: 18px;
|
|
89
89
|
height: 18px;
|
|
90
90
|
border-radius: 999px;
|
|
91
|
-
border: 1px solid
|
|
92
|
-
background:
|
|
91
|
+
border: 1px solid var(--color-border-soft);
|
|
92
|
+
background: var(--color-surface-alt);
|
|
93
93
|
line-height: 1;
|
|
94
94
|
flex: 0 0 auto;
|
|
95
|
+
transition: all var(--transition-fast) var(--ease-spring);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
.session-filter-chip-close:hover {
|
|
99
|
+
border-color: var(--color-brand);
|
|
100
|
+
background: var(--color-brand);
|
|
101
|
+
color: #fff;
|
|
95
102
|
}
|
|
96
103
|
|
|
97
104
|
.session-filter-chip:focus-visible {
|
|
98
|
-
outline: 3px solid rgba(
|
|
105
|
+
outline: 3px solid rgba(210, 107, 90, 0.2);
|
|
99
106
|
outline-offset: 2px;
|
|
100
107
|
}
|
|
101
108
|
|
|
102
109
|
.session-toolbar-footer .quick-option {
|
|
103
110
|
margin: 0;
|
|
104
|
-
padding:
|
|
105
|
-
border-radius: var(--radius-
|
|
111
|
+
padding: 5px 10px;
|
|
112
|
+
border-radius: var(--radius-md);
|
|
106
113
|
border: 1px solid var(--color-border-soft);
|
|
107
|
-
background:
|
|
108
|
-
box-shadow: inset 0 1px 2px rgba(31, 26, 23, 0.04);
|
|
114
|
+
background: var(--color-surface);
|
|
109
115
|
transition: all var(--transition-fast) var(--ease-spring);
|
|
110
116
|
line-height: 1.2;
|
|
111
117
|
}
|
|
112
118
|
|
|
113
119
|
.session-toolbar-footer .quick-option:hover {
|
|
114
|
-
border-color: var(--color-
|
|
120
|
+
border-color: var(--color-brand);
|
|
115
121
|
}
|
|
116
122
|
|
|
117
123
|
.session-source-select,
|
|
@@ -121,16 +127,15 @@
|
|
|
121
127
|
.session-time-select {
|
|
122
128
|
flex: 1;
|
|
123
129
|
min-width: 160px;
|
|
124
|
-
padding:
|
|
125
|
-
border-radius: var(--radius-
|
|
130
|
+
padding: 9px 12px;
|
|
131
|
+
border-radius: var(--radius-md);
|
|
126
132
|
border: 1px solid var(--color-border-soft);
|
|
127
|
-
background:
|
|
133
|
+
background: var(--color-surface);
|
|
128
134
|
color: var(--color-text-secondary);
|
|
129
135
|
font-size: var(--font-size-body);
|
|
130
136
|
font-family: var(--font-family);
|
|
131
137
|
outline: none;
|
|
132
138
|
transition: all var(--transition-fast) var(--ease-spring);
|
|
133
|
-
box-shadow: inset 0 1px 2px rgba(31, 26, 23, 0.04);
|
|
134
139
|
}
|
|
135
140
|
|
|
136
141
|
.session-query-input {
|
|
@@ -251,31 +256,29 @@
|
|
|
251
256
|
.btn-session-clone,
|
|
252
257
|
.btn-session-refresh {
|
|
253
258
|
border: 1px solid var(--color-border-soft);
|
|
254
|
-
border-radius: var(--radius-
|
|
255
|
-
background:
|
|
259
|
+
border-radius: var(--radius-md);
|
|
260
|
+
background: var(--color-surface);
|
|
256
261
|
color: var(--color-text-secondary);
|
|
257
|
-
padding:
|
|
262
|
+
padding: 7px 12px;
|
|
258
263
|
font-size: var(--font-size-secondary);
|
|
259
264
|
font-weight: var(--font-weight-secondary);
|
|
260
265
|
cursor: pointer;
|
|
261
266
|
transition: all var(--transition-fast) var(--ease-spring);
|
|
262
267
|
white-space: nowrap;
|
|
263
|
-
box-shadow: var(--shadow-subtle);
|
|
264
268
|
letter-spacing: -0.01em;
|
|
265
269
|
}
|
|
266
270
|
|
|
267
271
|
.btn-session-delete {
|
|
268
|
-
border: 1px solid rgba(189, 70, 68, 0.
|
|
269
|
-
border-radius: var(--radius-
|
|
270
|
-
background:
|
|
272
|
+
border: 1px solid rgba(189, 70, 68, 0.4);
|
|
273
|
+
border-radius: var(--radius-md);
|
|
274
|
+
background: var(--color-surface);
|
|
271
275
|
color: #b74545;
|
|
272
|
-
padding:
|
|
276
|
+
padding: 7px 12px;
|
|
273
277
|
font-size: var(--font-size-secondary);
|
|
274
278
|
font-weight: var(--font-weight-secondary);
|
|
275
279
|
cursor: pointer;
|
|
276
280
|
transition: all var(--transition-fast) var(--ease-spring);
|
|
277
281
|
white-space: nowrap;
|
|
278
|
-
box-shadow: var(--shadow-subtle);
|
|
279
282
|
letter-spacing: -0.01em;
|
|
280
283
|
}
|
|
281
284
|
|
|
@@ -319,6 +322,7 @@
|
|
|
319
322
|
|
|
320
323
|
.btn-session-delete:hover {
|
|
321
324
|
border-color: rgba(189, 70, 68, 0.8);
|
|
325
|
+
background: rgba(189, 70, 68, 0.06);
|
|
322
326
|
color: #9f3b3b;
|
|
323
327
|
transform: translateY(-1px);
|
|
324
328
|
}
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
/* ============================================
|
|
2
|
-
Settings Panel
|
|
3
|
-
- Keep existing warm-neutral theme
|
|
4
|
-
- Add clearer hierarchy, grid rhythm, and card affordance
|
|
2
|
+
Settings Panel — refined visual layer
|
|
5
3
|
============================================ */
|
|
6
4
|
|
|
7
5
|
.settings-layout {
|
|
@@ -11,36 +9,33 @@
|
|
|
11
9
|
.settings-grid {
|
|
12
10
|
display: grid;
|
|
13
11
|
grid-template-columns: repeat(12, minmax(0, 1fr));
|
|
14
|
-
gap:
|
|
12
|
+
gap: 18px;
|
|
15
13
|
}
|
|
16
14
|
|
|
15
|
+
/* ---- Card shell ---- */
|
|
17
16
|
.settings-card {
|
|
18
17
|
grid-column: span 6;
|
|
19
18
|
border-radius: var(--radius-xl);
|
|
20
19
|
border: 1px solid rgba(216, 201, 184, 0.42);
|
|
21
20
|
background:
|
|
22
|
-
linear-gradient(180deg, rgba(255, 255, 255, 0.
|
|
21
|
+
linear-gradient(180deg, rgba(255, 255, 255, 0.96) 0%, rgba(255, 253, 252, 0.9) 100%);
|
|
23
22
|
box-shadow: var(--shadow-card);
|
|
24
|
-
padding:
|
|
23
|
+
padding: 16px 16px 14px;
|
|
25
24
|
display: flex;
|
|
26
25
|
flex-direction: column;
|
|
27
|
-
gap: 10px;
|
|
28
26
|
min-width: 0;
|
|
29
27
|
position: relative;
|
|
30
28
|
overflow: hidden;
|
|
29
|
+
transition: box-shadow var(--transition-normal) var(--ease-smooth),
|
|
30
|
+
transform var(--transition-normal) var(--ease-smooth);
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
-
.settings-card
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
inset: 0;
|
|
37
|
-
background:
|
|
38
|
-
radial-gradient(900px 240px at 10% 0%, rgba(199, 116, 98, 0.12) 0%, rgba(199, 116, 98, 0) 55%),
|
|
39
|
-
radial-gradient(700px 240px at 90% 10%, rgba(199, 116, 98, 0.07) 0%, rgba(199, 116, 98, 0) 60%);
|
|
40
|
-
pointer-events: none;
|
|
41
|
-
opacity: 0.7;
|
|
33
|
+
.settings-card:hover {
|
|
34
|
+
box-shadow: var(--shadow-card-hover);
|
|
35
|
+
transform: translateY(-1px);
|
|
42
36
|
}
|
|
43
37
|
|
|
38
|
+
|
|
44
39
|
.settings-card > * {
|
|
45
40
|
position: relative;
|
|
46
41
|
z-index: 1;
|
|
@@ -51,26 +46,22 @@
|
|
|
51
46
|
}
|
|
52
47
|
|
|
53
48
|
.settings-card--danger {
|
|
54
|
-
border-color: rgba(196, 69, 54, 0.
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
.settings-card--danger::before {
|
|
58
|
-
background:
|
|
59
|
-
radial-gradient(980px 260px at 10% 0%, rgba(196, 69, 54, 0.13) 0%, rgba(196, 69, 54, 0) 55%),
|
|
60
|
-
radial-gradient(740px 240px at 90% 10%, rgba(199, 116, 98, 0.08) 0%, rgba(199, 116, 98, 0) 60%);
|
|
49
|
+
border-color: rgba(196, 69, 54, 0.22);
|
|
61
50
|
}
|
|
62
51
|
|
|
52
|
+
/* ---- Card header ---- */
|
|
63
53
|
.settings-card-header {
|
|
64
54
|
display: flex;
|
|
65
55
|
flex-direction: column;
|
|
66
56
|
gap: 3px;
|
|
57
|
+
padding-bottom: 0;
|
|
67
58
|
}
|
|
68
59
|
|
|
69
60
|
.settings-card-header-row {
|
|
70
61
|
flex-direction: row;
|
|
71
62
|
justify-content: space-between;
|
|
72
63
|
align-items: flex-start;
|
|
73
|
-
gap:
|
|
64
|
+
gap: 16px;
|
|
74
65
|
}
|
|
75
66
|
|
|
76
67
|
.settings-card-title {
|
|
@@ -78,6 +69,22 @@
|
|
|
78
69
|
font-weight: 700;
|
|
79
70
|
letter-spacing: -0.01em;
|
|
80
71
|
color: var(--color-text-primary);
|
|
72
|
+
display: flex;
|
|
73
|
+
align-items: center;
|
|
74
|
+
gap: 7px;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.settings-card-title-icon {
|
|
78
|
+
display: inline-flex;
|
|
79
|
+
align-items: center;
|
|
80
|
+
justify-content: center;
|
|
81
|
+
width: 22px;
|
|
82
|
+
height: 22px;
|
|
83
|
+
border-radius: 6px;
|
|
84
|
+
background: var(--color-brand-light);
|
|
85
|
+
color: var(--color-brand-dark);
|
|
86
|
+
font-size: 12px;
|
|
87
|
+
flex-shrink: 0;
|
|
81
88
|
}
|
|
82
89
|
|
|
83
90
|
.settings-card-meta {
|
|
@@ -86,6 +93,7 @@
|
|
|
86
93
|
line-height: 1.35;
|
|
87
94
|
}
|
|
88
95
|
|
|
96
|
+
/* ---- Card body ---- */
|
|
89
97
|
.settings-card-body {
|
|
90
98
|
display: flex;
|
|
91
99
|
flex-direction: column;
|
|
@@ -109,6 +117,7 @@
|
|
|
109
117
|
color: var(--color-text-secondary);
|
|
110
118
|
}
|
|
111
119
|
|
|
120
|
+
/* ---- Field row ---- */
|
|
112
121
|
.settings-field-row {
|
|
113
122
|
display: grid;
|
|
114
123
|
grid-template-columns: 88px minmax(0, 1fr);
|
|
@@ -123,6 +132,7 @@
|
|
|
123
132
|
letter-spacing: 0.02em;
|
|
124
133
|
}
|
|
125
134
|
|
|
135
|
+
/* ---- Actions ---- */
|
|
126
136
|
.settings-actions {
|
|
127
137
|
display: flex;
|
|
128
138
|
flex-wrap: wrap;
|
|
@@ -140,39 +150,180 @@
|
|
|
140
150
|
margin-top: 2px;
|
|
141
151
|
}
|
|
142
152
|
|
|
153
|
+
/* ---- Toggle switch (replaces checkbox) ---- */
|
|
143
154
|
.settings-toggle {
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
155
|
+
display: inline-flex;
|
|
156
|
+
align-items: center;
|
|
157
|
+
gap: 10px;
|
|
158
|
+
cursor: pointer;
|
|
159
|
+
padding: 0;
|
|
160
|
+
border: none;
|
|
161
|
+
background: none;
|
|
162
|
+
border-radius: 0;
|
|
163
|
+
user-select: none;
|
|
148
164
|
}
|
|
149
165
|
|
|
166
|
+
.settings-toggle input[type="checkbox"] {
|
|
167
|
+
appearance: none;
|
|
168
|
+
-webkit-appearance: none;
|
|
169
|
+
width: 40px;
|
|
170
|
+
height: 22px;
|
|
171
|
+
border-radius: 11px;
|
|
172
|
+
background: rgba(137, 111, 94, 0.22);
|
|
173
|
+
border: 1px solid rgba(137, 111, 94, 0.16);
|
|
174
|
+
cursor: pointer;
|
|
175
|
+
position: relative;
|
|
176
|
+
transition: background var(--transition-fast) var(--ease-smooth),
|
|
177
|
+
border-color var(--transition-fast) var(--ease-smooth);
|
|
178
|
+
flex-shrink: 0;
|
|
179
|
+
margin: 0;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
.settings-toggle input[type="checkbox"]::after {
|
|
183
|
+
content: '';
|
|
184
|
+
position: absolute;
|
|
185
|
+
top: 2px;
|
|
186
|
+
left: 2px;
|
|
187
|
+
width: 16px;
|
|
188
|
+
height: 16px;
|
|
189
|
+
border-radius: 50%;
|
|
190
|
+
background: #fff;
|
|
191
|
+
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);
|
|
192
|
+
transition: transform var(--transition-fast) var(--ease-spring);
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
.settings-toggle input[type="checkbox"]:checked {
|
|
196
|
+
background: var(--color-brand);
|
|
197
|
+
border-color: var(--color-brand);
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
.settings-toggle input[type="checkbox"]:checked::after {
|
|
201
|
+
transform: translateX(18px);
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
.settings-toggle input[type="checkbox"]:focus-visible {
|
|
205
|
+
outline: 2px solid var(--color-brand);
|
|
206
|
+
outline-offset: 2px;
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
.settings-toggle span {
|
|
210
|
+
font-size: var(--font-size-secondary);
|
|
211
|
+
color: var(--color-text-secondary);
|
|
212
|
+
font-weight: var(--font-weight-body);
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
/* ---- Retention row ---- */
|
|
150
216
|
.settings-retention-row {
|
|
151
217
|
display: flex;
|
|
152
218
|
align-items: center;
|
|
153
219
|
gap: 10px;
|
|
154
|
-
padding: 8px
|
|
220
|
+
padding: 8px 12px;
|
|
155
221
|
border-radius: 12px;
|
|
156
222
|
border: 1px solid rgba(216, 201, 184, 0.4);
|
|
157
223
|
background: rgba(248, 243, 238, 0.6);
|
|
158
224
|
}
|
|
159
225
|
|
|
160
226
|
.settings-retention-input {
|
|
161
|
-
width:
|
|
227
|
+
width: 64px;
|
|
162
228
|
padding: 4px 8px;
|
|
163
229
|
border: 1px solid rgba(216, 201, 184, 0.6);
|
|
164
230
|
border-radius: 8px;
|
|
165
231
|
font-size: 14px;
|
|
166
232
|
text-align: center;
|
|
233
|
+
font-weight: 600;
|
|
234
|
+
color: var(--color-text-primary);
|
|
235
|
+
background: var(--color-surface);
|
|
236
|
+
transition: border-color var(--transition-fast) var(--ease-smooth);
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
.settings-retention-input:focus {
|
|
240
|
+
border-color: var(--color-brand);
|
|
241
|
+
outline: none;
|
|
242
|
+
box-shadow: 0 0 0 3px var(--color-brand-light);
|
|
167
243
|
}
|
|
168
244
|
|
|
169
|
-
/*
|
|
245
|
+
/* ---- Backup grid ---- */
|
|
246
|
+
.settings-backup-grid {
|
|
247
|
+
display: grid;
|
|
248
|
+
grid-template-columns: 1fr 1fr;
|
|
249
|
+
gap: 16px;
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
.settings-backup-slot {
|
|
253
|
+
display: flex;
|
|
254
|
+
flex-direction: column;
|
|
255
|
+
gap: 8px;
|
|
256
|
+
padding: 12px 14px;
|
|
257
|
+
border-radius: var(--radius-md);
|
|
258
|
+
background: rgba(247, 240, 233, 0.45);
|
|
259
|
+
border: 1px solid var(--color-border-soft);
|
|
260
|
+
transition: border-color var(--transition-fast) var(--ease-smooth);
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
.settings-backup-slot:hover {
|
|
264
|
+
border-color: var(--color-border);
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
.settings-backup-slot-label {
|
|
268
|
+
font-size: var(--font-size-caption);
|
|
269
|
+
font-weight: var(--font-weight-secondary);
|
|
270
|
+
color: var(--color-text-muted);
|
|
271
|
+
letter-spacing: 0.03em;
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
/* ---- Trash config grid ---- */
|
|
275
|
+
.settings-trash-config-grid {
|
|
276
|
+
display: flex;
|
|
277
|
+
align-items: center;
|
|
278
|
+
gap: 16px;
|
|
279
|
+
flex-wrap: wrap;
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
/* ---- Subtab bar ---- */
|
|
283
|
+
.settings-subtabs-bar {
|
|
284
|
+
display: flex;
|
|
285
|
+
align-items: center;
|
|
286
|
+
gap: 4px;
|
|
287
|
+
margin-bottom: 22px;
|
|
288
|
+
padding: 4px;
|
|
289
|
+
background: rgba(247, 240, 233, 0.4);
|
|
290
|
+
border-radius: var(--radius-md);
|
|
291
|
+
border: 1px solid var(--color-border-soft);
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
.settings-subtab {
|
|
295
|
+
position: relative;
|
|
296
|
+
padding: 8px 18px;
|
|
297
|
+
border: none;
|
|
298
|
+
border-radius: var(--radius-sm);
|
|
299
|
+
background: transparent;
|
|
300
|
+
color: var(--color-text-muted);
|
|
301
|
+
cursor: pointer;
|
|
302
|
+
font-size: 13px;
|
|
303
|
+
font-weight: var(--font-weight-secondary);
|
|
304
|
+
transition: all var(--transition-fast) var(--ease-smooth);
|
|
305
|
+
letter-spacing: 0.01em;
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
.settings-subtab:hover {
|
|
309
|
+
color: var(--color-text-primary);
|
|
310
|
+
background: rgba(255, 255, 255, 0.6);
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
.settings-subtab.active {
|
|
314
|
+
color: var(--color-brand-dark);
|
|
315
|
+
font-weight: 700;
|
|
316
|
+
background: var(--color-surface);
|
|
317
|
+
box-shadow: var(--shadow-subtle);
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
/* ---- Buttons inside cards ---- */
|
|
170
321
|
.settings-card .btn-tool {
|
|
171
322
|
width: auto;
|
|
172
323
|
max-width: 100%;
|
|
173
324
|
}
|
|
174
325
|
|
|
175
|
-
/* Mobile
|
|
326
|
+
/* ---- Mobile ---- */
|
|
176
327
|
@media (max-width: 860px) {
|
|
177
328
|
.settings-card {
|
|
178
329
|
grid-column: 1 / -1;
|
|
@@ -181,5 +332,18 @@
|
|
|
181
332
|
grid-template-columns: 1fr;
|
|
182
333
|
align-items: stretch;
|
|
183
334
|
}
|
|
335
|
+
.settings-backup-grid {
|
|
336
|
+
grid-template-columns: 1fr;
|
|
337
|
+
}
|
|
338
|
+
.settings-trash-config-grid {
|
|
339
|
+
flex-direction: column;
|
|
340
|
+
align-items: stretch;
|
|
341
|
+
}
|
|
342
|
+
.settings-subtabs-bar {
|
|
343
|
+
gap: 2px;
|
|
344
|
+
}
|
|
345
|
+
.settings-subtab {
|
|
346
|
+
padding: 8px 14px;
|
|
347
|
+
font-size: 12px;
|
|
348
|
+
}
|
|
184
349
|
}
|
|
185
|
-
|