gh-here 3.1.0 → 3.2.0

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,286 @@
1
+ /**
2
+ * Modal and Overlay Styles
3
+ * Keyboard help, diff viewer, and general modal dialogs
4
+ */
5
+
6
+ /* ========================================
7
+ Keyboard Help Overlay
8
+ ======================================== */
9
+
10
+ .keyboard-help-overlay {
11
+ align-items: center;
12
+ animation: fadeIn 0.2s ease-out;
13
+ backdrop-filter: blur(4px);
14
+ background: rgba(0, 0, 0, 0.8);
15
+ display: flex;
16
+ height: 100%;
17
+ justify-content: center;
18
+ left: 0;
19
+ position: fixed;
20
+ top: 0;
21
+ width: 100%;
22
+ z-index: 99999;
23
+ }
24
+
25
+ .keyboard-help-content {
26
+ animation: slideUp 0.3s ease-out;
27
+ background: var(--bg-primary);
28
+ border: 1px solid var(--border-primary);
29
+ border-radius: 8px;
30
+ box-shadow: 0 16px 48px rgba(0, 0, 0, 0.5);
31
+ margin: 20px;
32
+ max-height: 80vh;
33
+ max-width: 800px;
34
+ overflow-y: auto;
35
+ }
36
+
37
+ .keyboard-help-header {
38
+ align-items: center;
39
+ background: var(--bg-secondary);
40
+ border-bottom: 1px solid var(--border-primary);
41
+ border-radius: 8px 8px 0 0;
42
+ display: flex;
43
+ justify-content: space-between;
44
+ padding: 24px 30px 16px;
45
+ }
46
+
47
+ .keyboard-help-header h2 {
48
+ color: var(--text-primary);
49
+ font-size: 24px;
50
+ font-weight: 600;
51
+ margin: 0;
52
+ }
53
+
54
+ .keyboard-help-close {
55
+ background: none;
56
+ border: none;
57
+ border-radius: 4px;
58
+ color: var(--text-secondary);
59
+ cursor: pointer;
60
+ font-size: 24px;
61
+ padding: 4px;
62
+ transition: color 0.2s ease;
63
+ }
64
+
65
+ .keyboard-help-close:hover {
66
+ background: var(--hover-bg);
67
+ color: var(--text-primary);
68
+ }
69
+
70
+ .keyboard-help-body {
71
+ padding: 0;
72
+ }
73
+
74
+ .shortcuts-container {
75
+ display: grid;
76
+ gap: 0;
77
+ grid-template-columns: 1fr 1fr;
78
+ }
79
+
80
+ .shortcut-section {
81
+ border-right: 1px solid var(--border-primary);
82
+ padding: 40px 50px;
83
+ }
84
+
85
+ .shortcut-section:last-child {
86
+ border-right: none;
87
+ }
88
+
89
+ .shortcut-section h3 {
90
+ color: var(--text-primary);
91
+ font-size: 16px;
92
+ font-weight: 600;
93
+ margin: 0 0 24px 0;
94
+ }
95
+
96
+ .shortcut-list {
97
+ display: flex;
98
+ flex-direction: column;
99
+ gap: 20px;
100
+ }
101
+
102
+ .shortcut-item {
103
+ align-items: center;
104
+ border-radius: 0;
105
+ display: flex;
106
+ justify-content: space-between;
107
+ padding: 0;
108
+ transition: none;
109
+ }
110
+
111
+ .shortcut-keys {
112
+ align-items: center;
113
+ display: flex;
114
+ gap: 6px;
115
+ }
116
+
117
+ .shortcut-keys kbd {
118
+ background: var(--bg-tertiary);
119
+ border: 1px solid var(--border-secondary);
120
+ border-radius: 4px;
121
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
122
+ color: var(--text-primary);
123
+ font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;
124
+ font-size: 11px;
125
+ min-width: 20px;
126
+ padding: 4px 8px;
127
+ text-align: center;
128
+ white-space: nowrap;
129
+ }
130
+
131
+ .shortcut-desc {
132
+ color: var(--text-primary);
133
+ flex: 1;
134
+ font-size: 14px;
135
+ text-align: left;
136
+ }
137
+
138
+ /* ========================================
139
+ Diff Viewer Modal
140
+ ======================================== */
141
+
142
+ .diff-viewer-overlay {
143
+ align-items: center;
144
+ animation: fadeIn 0.2s ease-out;
145
+ backdrop-filter: blur(4px);
146
+ background: rgba(0, 0, 0, 0.8);
147
+ display: flex;
148
+ height: 100%;
149
+ justify-content: center;
150
+ left: 0;
151
+ position: fixed;
152
+ top: 0;
153
+ width: 100%;
154
+ z-index: 99999;
155
+ }
156
+
157
+ .diff-viewer-modal {
158
+ animation: slideUp 0.3s ease-out;
159
+ background: var(--bg-primary);
160
+ border: 1px solid var(--border-primary);
161
+ border-radius: 8px;
162
+ box-shadow: 0 16px 48px rgba(0, 0, 0, 0.5);
163
+ display: flex;
164
+ flex-direction: column;
165
+ height: 80vh;
166
+ max-width: 1200px;
167
+ width: 90vw;
168
+ }
169
+
170
+ .diff-viewer-header {
171
+ align-items: center;
172
+ background: var(--bg-secondary);
173
+ border-bottom: 1px solid var(--border-primary);
174
+ border-radius: 8px 8px 0 0;
175
+ display: flex;
176
+ justify-content: space-between;
177
+ padding: 16px 20px;
178
+ }
179
+
180
+ .diff-viewer-title {
181
+ align-items: center;
182
+ color: var(--text-primary);
183
+ display: flex;
184
+ font-size: 16px;
185
+ font-weight: 600;
186
+ gap: 8px;
187
+ margin: 0;
188
+ }
189
+
190
+ .diff-close-btn {
191
+ background: none;
192
+ border: none;
193
+ border-radius: 4px;
194
+ color: var(--text-secondary);
195
+ cursor: pointer;
196
+ font-size: 24px;
197
+ padding: 4px;
198
+ transition: color 0.2s ease;
199
+ }
200
+
201
+ .diff-close-btn:hover {
202
+ background: var(--hover-bg);
203
+ color: var(--text-primary);
204
+ }
205
+
206
+ .diff-viewer-content {
207
+ flex: 1;
208
+ overflow: auto;
209
+ padding: 0;
210
+ }
211
+
212
+ /* ========================================
213
+ Draft Dialog
214
+ ======================================== */
215
+
216
+ .draft-modal {
217
+ max-width: 400px;
218
+ text-align: center;
219
+ }
220
+
221
+ .draft-modal h3 {
222
+ color: var(--text-accent);
223
+ font-size: 18px;
224
+ margin: 0 0 12px 0;
225
+ }
226
+
227
+ .draft-modal p {
228
+ color: var(--text-secondary);
229
+ line-height: 1.5;
230
+ margin: 0 0 20px 0;
231
+ }
232
+
233
+ .draft-actions {
234
+ display: flex;
235
+ gap: 8px;
236
+ justify-content: center;
237
+ }
238
+
239
+ .draft-actions .btn {
240
+ flex: 1;
241
+ max-width: 120px;
242
+ }
243
+
244
+ /* ========================================
245
+ Animations
246
+ ======================================== */
247
+
248
+ @keyframes fadeIn {
249
+ from {
250
+ opacity: 0;
251
+ }
252
+ to {
253
+ opacity: 1;
254
+ }
255
+ }
256
+
257
+ @keyframes slideUp {
258
+ from {
259
+ opacity: 0;
260
+ transform: translateY(30px);
261
+ }
262
+ to {
263
+ opacity: 1;
264
+ transform: translateY(0);
265
+ }
266
+ }
267
+
268
+ /* ========================================
269
+ Responsive - Mobile
270
+ ======================================== */
271
+
272
+ @media (max-width: 768px) {
273
+ .keyboard-help-content {
274
+ margin: 20px;
275
+ max-width: calc(100% - 40px);
276
+ }
277
+
278
+ .shortcuts-container {
279
+ gap: 24px;
280
+ grid-template-columns: 1fr;
281
+ }
282
+
283
+ .keyboard-help-body {
284
+ padding: 20px;
285
+ }
286
+ }
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Notification Styles
3
+ * Toast notifications and alerts
4
+ */
5
+
6
+ .notification {
7
+ backdrop-filter: blur(10px);
8
+ border: 1px solid rgba(255, 255, 255, 0.1);
9
+ border-radius: 6px;
10
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3);
11
+ color: white;
12
+ font-size: 14px;
13
+ font-weight: 500;
14
+ max-width: 400px;
15
+ padding: 12px 16px;
16
+ position: fixed;
17
+ right: 20px;
18
+ top: 20px;
19
+ transition: opacity 0.3s ease;
20
+ z-index: 10000;
21
+ }
22
+
23
+ .notification-success {
24
+ background: rgba(46, 160, 67, 0.9);
25
+ border-color: rgba(46, 160, 67, 0.5);
26
+ }
27
+
28
+ .notification-error {
29
+ background: rgba(248, 81, 73, 0.9);
30
+ border-color: rgba(248, 81, 73, 0.5);
31
+ }
32
+
33
+ .notification-info {
34
+ background: rgba(88, 166, 255, 0.9);
35
+ border-color: rgba(88, 166, 255, 0.5);
36
+ }
@@ -0,0 +1,318 @@
1
+ /**
2
+ * File Table Styles
3
+ * Directory listing table, file rows, and language stats
4
+ */
5
+
6
+ /* ========================================
7
+ File Table Container
8
+ ======================================== */
9
+
10
+ .file-table-container {
11
+ margin-bottom: 24px;
12
+ margin-top: 0;
13
+ }
14
+
15
+ /* ========================================
16
+ File Table
17
+ ======================================== */
18
+
19
+ .file-table {
20
+ backdrop-filter: blur(10px);
21
+ background: var(--bg-card);
22
+ border: 1px solid var(--border-subtle);
23
+ border-collapse: separate;
24
+ border-radius: var(--radius-xl);
25
+ border-spacing: 0;
26
+ box-shadow: var(--shadow-md);
27
+ margin-top: 0;
28
+ overflow: hidden;
29
+ transition: all var(--transition-base);
30
+ width: 100%;
31
+ }
32
+
33
+ .file-table:hover {
34
+ border-color: var(--border-primary);
35
+ box-shadow: var(--shadow-xl);
36
+ transform: translateY(-2px);
37
+ }
38
+
39
+ /* ========================================
40
+ Table Header
41
+ ======================================== */
42
+
43
+ .file-table thead {
44
+ backdrop-filter: blur(10px);
45
+ background: linear-gradient(180deg, rgba(19, 23, 29, 0.6) 0%, rgba(19, 23, 29, 0.4) 100%);
46
+ position: sticky;
47
+ top: 0;
48
+ z-index: 10;
49
+ }
50
+
51
+ [data-theme="light"] .file-table thead {
52
+ background: linear-gradient(180deg, rgba(248, 250, 252, 0.8) 0%, rgba(248, 250, 252, 0.6) 100%);
53
+ }
54
+
55
+ .file-table th {
56
+ border-bottom: 1px solid var(--border-subtle);
57
+ color: var(--text-secondary);
58
+ font-size: 12px;
59
+ font-weight: 600;
60
+ padding: 12px 16px;
61
+ text-align: left;
62
+ }
63
+
64
+ /* ========================================
65
+ Table Columns
66
+ ======================================== */
67
+
68
+ .file-table .col-icon {
69
+ padding-left: 16px;
70
+ padding-right: 0;
71
+ text-align: center;
72
+ width: 52px;
73
+ }
74
+
75
+ .file-table .col-name {
76
+ min-width: 200px;
77
+ padding-right: 80px;
78
+ text-align: left;
79
+ }
80
+
81
+ .file-table .col-name a {
82
+ color: var(--link-color);
83
+ display: block;
84
+ font-weight: 500;
85
+ overflow: hidden;
86
+ padding-right: 8px;
87
+ text-decoration: none;
88
+ text-overflow: ellipsis;
89
+ white-space: nowrap;
90
+ }
91
+
92
+ .file-table .col-name a:hover {
93
+ text-decoration: underline;
94
+ }
95
+
96
+ .file-table .col-size {
97
+ text-align: right;
98
+ width: 100px;
99
+ }
100
+
101
+ .file-table .col-modified {
102
+ padding-right: 16px;
103
+ text-align: right;
104
+ width: 120px;
105
+ }
106
+
107
+ /* ========================================
108
+ Table Body Rows
109
+ ======================================== */
110
+
111
+ .file-table tbody tr {
112
+ border-bottom: 1px solid var(--border-subtle);
113
+ position: relative;
114
+ transition: all var(--transition-base);
115
+ }
116
+
117
+ .file-table tbody tr::before {
118
+ background: var(--link-color);
119
+ border-radius: 0 2px 2px 0;
120
+ bottom: 0;
121
+ content: '';
122
+ left: 0;
123
+ opacity: 0;
124
+ position: absolute;
125
+ top: 0;
126
+ transition: opacity var(--transition-base);
127
+ width: 3px;
128
+ }
129
+
130
+ .file-table tbody tr:hover {
131
+ background: linear-gradient(90deg, var(--hover-bg) 0%, rgba(30, 36, 43, 0.5) 50%, transparent 100%);
132
+ box-shadow: -4px 0 12px rgba(96, 165, 250, 0.1);
133
+ transform: translateX(4px);
134
+ }
135
+
136
+ .file-table tbody tr:hover::before {
137
+ opacity: 1;
138
+ }
139
+
140
+ [data-theme="light"] .file-table tbody tr:hover {
141
+ background: linear-gradient(90deg, var(--hover-bg) 0%, rgba(241, 245, 249, 0.8) 50%, transparent 100%);
142
+ box-shadow: -4px 0 12px rgba(37, 99, 235, 0.08);
143
+ }
144
+
145
+ .file-table tbody tr:last-child {
146
+ border-bottom: none;
147
+ }
148
+
149
+ .file-table tbody tr:first-child td {
150
+ padding-top: 16px;
151
+ }
152
+
153
+ .file-table tbody tr:last-child td {
154
+ padding-bottom: 16px;
155
+ }
156
+
157
+ /* ========================================
158
+ Table Cells
159
+ ======================================== */
160
+
161
+ .file-table td {
162
+ font-size: 14px;
163
+ padding: 10px 16px;
164
+ transition: all var(--transition-base);
165
+ vertical-align: middle;
166
+ }
167
+
168
+ .file-table td.col-icon {
169
+ align-items: center;
170
+ display: flex;
171
+ gap: 8px;
172
+ }
173
+
174
+ .file-table td.col-icon svg {
175
+ flex-shrink: 0;
176
+ height: 16px;
177
+ width: 16px;
178
+ }
179
+
180
+ .file-table td.col-size,
181
+ .file-table td.col-modified {
182
+ color: var(--text-muted);
183
+ white-space: nowrap;
184
+ }
185
+
186
+ /* ========================================
187
+ File Row States
188
+ ======================================== */
189
+
190
+ .file-row {
191
+ cursor: pointer;
192
+ transition: all 0.15s ease;
193
+ }
194
+
195
+ .file-row:hover {
196
+ background-color: var(--hover-bg);
197
+ transform: translateX(2px);
198
+ }
199
+
200
+ .file-row.focused {
201
+ background-color: var(--link-color);
202
+ color: white;
203
+ }
204
+
205
+ .file-row.focused a {
206
+ color: white;
207
+ }
208
+
209
+ .file-row.focused .text-yellow,
210
+ .file-row.focused .text-blue,
211
+ .file-row.focused .text-green,
212
+ .file-row.focused .text-red,
213
+ .file-row.focused .text-orange,
214
+ .file-row.focused .text-purple,
215
+ .file-row.focused .text-gray {
216
+ color: rgba(255, 255, 255, 0.9);
217
+ }
218
+
219
+ .file-row.hidden {
220
+ display: none;
221
+ }
222
+
223
+ /* ========================================
224
+ Name Column
225
+ ======================================== */
226
+
227
+ .name {
228
+ align-items: center;
229
+ display: flex;
230
+ flex-wrap: nowrap;
231
+ gap: 4px;
232
+ position: relative;
233
+ }
234
+
235
+ /* ========================================
236
+ Language Stats
237
+ ======================================== */
238
+
239
+ .language-stats {
240
+ align-items: center;
241
+ backdrop-filter: blur(10px);
242
+ background: linear-gradient(135deg, var(--bg-card) 0%, var(--bg-elevated) 100%);
243
+ border: 1px solid var(--border-subtle);
244
+ border-radius: var(--radius-lg);
245
+ box-shadow: var(--shadow-sm);
246
+ display: flex;
247
+ flex-shrink: 1;
248
+ gap: var(--space-md);
249
+ margin-left: var(--space-lg);
250
+ max-width: 400px;
251
+ min-width: 0;
252
+ overflow: visible;
253
+ padding: var(--space-sm) var(--space-md);
254
+ position: relative;
255
+ transition: all var(--transition-base);
256
+ white-space: nowrap;
257
+ }
258
+
259
+ .language-stats:hover {
260
+ border-color: var(--border-primary);
261
+ box-shadow: var(--shadow-md);
262
+ }
263
+
264
+ .lang-stat {
265
+ align-items: center;
266
+ border-radius: var(--radius-sm);
267
+ color: var(--text-secondary);
268
+ display: inline-flex;
269
+ flex-shrink: 0;
270
+ font-size: 12px;
271
+ gap: 6px;
272
+ padding: 4px 8px;
273
+ position: relative;
274
+ transition: all var(--transition-base);
275
+ white-space: nowrap;
276
+ }
277
+
278
+ .lang-stat:hover {
279
+ background: var(--hover-bg);
280
+ color: var(--text-primary);
281
+ }
282
+
283
+ .lang-dot {
284
+ border-radius: 50%;
285
+ box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.1), 0 2px 4px rgba(0, 0, 0, 0.2);
286
+ display: inline-block;
287
+ flex-shrink: 0;
288
+ height: 10px;
289
+ transition: all var(--transition-base);
290
+ width: 10px;
291
+ }
292
+
293
+ .lang-stat:hover .lang-dot {
294
+ box-shadow: 0 0 0 3px rgba(255, 255, 255, 0.15), 0 4px 8px rgba(0, 0, 0, 0.3);
295
+ }
296
+
297
+ .lang-name {
298
+ color: var(--text-primary);
299
+ font-weight: 600;
300
+ letter-spacing: -0.01em;
301
+ }
302
+
303
+ .lang-percent {
304
+ color: var(--text-secondary);
305
+ font-variant-numeric: tabular-nums;
306
+ font-weight: 500;
307
+ }
308
+
309
+ /* ========================================
310
+ Responsive - Mobile
311
+ ======================================== */
312
+
313
+ @media (max-width: 768px) {
314
+ .file-table .col-size,
315
+ .file-table .col-modified {
316
+ display: none;
317
+ }
318
+ }