jupyterlab_claude_code_extension 1.0.16

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/style/base.css ADDED
@@ -0,0 +1,246 @@
1
+ /*
2
+ See the JupyterLab Developer Guide for useful CSS Patterns:
3
+ https://jupyterlab.readthedocs.io/en/stable/developer/css.html
4
+ */
5
+
6
+ .jp-ClaudeSessionsPanel {
7
+ display: flex;
8
+ flex-direction: column;
9
+ background-color: var(--jp-layout-color1);
10
+ color: var(--jp-ui-font-color1);
11
+ font-family: var(--jp-ui-font-family);
12
+ font-size: var(--jp-ui-font-size1);
13
+ height: 100%;
14
+ min-width: 0;
15
+ }
16
+
17
+ .jp-ClaudeSessionsPanel-header {
18
+ display: flex;
19
+ align-items: center;
20
+ padding: 4px 8px;
21
+ border-bottom: 1px solid var(--jp-border-color2);
22
+ background: var(--jp-layout-color2);
23
+ flex: 0 0 auto;
24
+ min-height: 24px;
25
+ }
26
+
27
+ .jp-ClaudeSessionsPanel-title {
28
+ flex: 1 1 auto;
29
+ font-weight: 600;
30
+ letter-spacing: 0.04em;
31
+ text-transform: uppercase;
32
+ font-size: var(--jp-ui-font-size0);
33
+ color: var(--jp-ui-font-color2);
34
+ }
35
+
36
+ .jp-ClaudeSessionsPanel-iconButton {
37
+ background: transparent;
38
+ border: none;
39
+ cursor: pointer;
40
+ padding: 0;
41
+ border-radius: 2px;
42
+ display: flex;
43
+ width: 20px;
44
+ height: 20px;
45
+ align-items: center;
46
+ justify-content: center;
47
+ color: var(--jp-ui-font-color2);
48
+ }
49
+
50
+ .jp-ClaudeSessionsPanel-iconButton:hover {
51
+ background: var(--jp-layout-color3);
52
+ color: var(--jp-ui-font-color1);
53
+ }
54
+
55
+ .jp-ClaudeSessionsPanel-iconButton svg {
56
+ width: 14px;
57
+ height: 14px;
58
+ }
59
+
60
+ .jp-ClaudeSessionsPanel-body {
61
+ flex: 1 1 auto;
62
+ display: flex;
63
+ flex-direction: column;
64
+ overflow: hidden;
65
+ min-height: 0;
66
+ }
67
+
68
+ .jp-ClaudeSessionsPanel-status {
69
+ flex: 0 0 auto;
70
+ padding: 4px 8px;
71
+ font-size: var(--jp-ui-font-size0);
72
+ color: var(--jp-warn-color1);
73
+ min-height: 14px;
74
+ }
75
+
76
+ .jp-ClaudeSessionsPanel-empty,
77
+ .jp-ClaudeSessionsPanel-emptySection {
78
+ padding: 8px 12px;
79
+ color: var(--jp-ui-font-color3);
80
+ font-style: italic;
81
+ }
82
+
83
+ .jp-ClaudeSessionsPanel-section {
84
+ display: flex;
85
+ flex-direction: column;
86
+ flex: 0 0 auto;
87
+ max-height: 33vh;
88
+ min-height: 0;
89
+ border-bottom: 1px solid var(--jp-border-color3);
90
+ }
91
+
92
+ .jp-ClaudeSessionsPanel-section[data-section='all'] {
93
+ flex: 1 1 0;
94
+ max-height: none;
95
+ }
96
+
97
+ .jp-ClaudeSessionsPanel-sectionHeader {
98
+ flex: 0 0 auto;
99
+ display: flex;
100
+ align-items: center;
101
+ width: 100%;
102
+ padding: 4px 8px;
103
+ background: var(--jp-layout-color2);
104
+ border: none;
105
+ cursor: pointer;
106
+ text-align: left;
107
+ color: var(--jp-ui-font-color1);
108
+ font-family: inherit;
109
+ font-size: var(--jp-ui-font-size0);
110
+ font-weight: 600;
111
+ letter-spacing: 0.04em;
112
+ text-transform: uppercase;
113
+ }
114
+
115
+ .jp-ClaudeSessionsPanel-sectionHeader:hover {
116
+ background: var(--jp-layout-color3);
117
+ }
118
+
119
+ .jp-ClaudeSessionsPanel-caret {
120
+ width: 14px;
121
+ display: inline-block;
122
+ color: var(--jp-ui-font-color2);
123
+ }
124
+
125
+ .jp-ClaudeSessionsPanel-sectionLabel {
126
+ flex: 1 1 auto;
127
+ }
128
+
129
+ .jp-ClaudeSessionsPanel-list {
130
+ display: flex;
131
+ flex-direction: column;
132
+ flex: 1 1 auto;
133
+ overflow-y: auto;
134
+ min-height: 0;
135
+ }
136
+
137
+ .jp-ClaudeSessionsPanel-row {
138
+ display: flex;
139
+ align-items: center;
140
+ padding: 0 8px;
141
+ height: 24px;
142
+ line-height: 24px;
143
+ cursor: pointer;
144
+ gap: 6px;
145
+ user-select: none;
146
+ font-size: var(--jp-ui-font-size1);
147
+ }
148
+
149
+ .jp-ClaudeSessionsPanel-row:hover,
150
+ .jp-ClaudeSessionsPanel-row.jp-mod-active {
151
+ background: var(--jp-layout-color2);
152
+ }
153
+
154
+ .jp-ClaudeSessionsPanel-row.jp-mod-active {
155
+ background: var(--jp-layout-color3);
156
+ }
157
+
158
+ .jp-ClaudeSessionsPanel-name {
159
+ flex: 1 1 auto;
160
+ white-space: nowrap;
161
+ overflow: hidden;
162
+ text-overflow: ellipsis;
163
+ font-size: var(--jp-ui-font-size1);
164
+ color: var(--jp-ui-font-color1);
165
+ }
166
+
167
+ .jp-ClaudeSessionsPanel-dot,
168
+ .jp-ClaudeSessionsPanel-dotPlaceholder {
169
+ flex: 0 0 auto;
170
+ width: 8px;
171
+ height: 8px;
172
+ border-radius: 50%;
173
+ display: inline-block;
174
+ }
175
+
176
+ .jp-ClaudeSessionsPanel-dot {
177
+ background-color: var(--jp-success-color1);
178
+ box-shadow: 0 0 4px var(--jp-success-color1);
179
+ }
180
+
181
+ .jp-ClaudeSessionsPanel-dotPlaceholder {
182
+ background-color: transparent;
183
+ }
184
+
185
+ .jp-ClaudeSessionsPanel-favStar {
186
+ flex: 0 0 auto;
187
+ display: inline-flex;
188
+ align-items: center;
189
+ justify-content: center;
190
+ width: 14px;
191
+ height: 14px;
192
+ color: var(--jp-warn-color1);
193
+ }
194
+
195
+ .jp-ClaudeSessionsPanel-favStar svg {
196
+ width: 12px;
197
+ height: 12px;
198
+ }
199
+
200
+ @keyframes jp-claude-sessions-panel-spin {
201
+ from {
202
+ transform: rotate(0deg);
203
+ }
204
+
205
+ to {
206
+ transform: rotate(360deg);
207
+ }
208
+ }
209
+
210
+ .jp-ClaudeSessionsPanel-iconButton.jp-mod-spinning svg {
211
+ animation: jp-claude-sessions-panel-spin 0.9s linear infinite;
212
+ }
213
+
214
+ .jp-claude-sessions-panel-spinner {
215
+ flex: 0 0 auto;
216
+ width: 12px;
217
+ height: 12px;
218
+ border-radius: 50%;
219
+ border: 2px solid var(--jp-border-color2);
220
+ border-top-color: var(--jp-brand-color1);
221
+ animation: jp-claude-sessions-panel-spin 0.7s linear infinite;
222
+ display: inline-block;
223
+ }
224
+
225
+ .jp-ClaudeSessionsPanel-row.jp-mod-busy {
226
+ opacity: 0.55;
227
+ pointer-events: none;
228
+ }
229
+
230
+ /*
231
+ * Vertically centre context-menu icons with the label text. Lumino's
232
+ * .lm-Menu-itemIcon is display:table-cell so an inline SVG sits on the
233
+ * row's text baseline by default. JL's stock CSS adds margin-top:-2px on
234
+ * the cell which works for its own icons; for ours we additionally shift
235
+ * the SVG to the cell middle so the trash glyph aligns with "Remove from
236
+ * Claude" instead of hanging.
237
+ */
238
+ .jp-ClaudeSessionsContextMenu .lm-Menu-itemIcon {
239
+ vertical-align: middle;
240
+ }
241
+
242
+ .jp-ClaudeSessionsContextMenu .lm-Menu-itemIcon svg {
243
+ vertical-align: middle;
244
+ display: block;
245
+ margin: 0 auto;
246
+ }
@@ -0,0 +1 @@
1
+ @import url('base.css');
package/style/index.js ADDED
@@ -0,0 +1 @@
1
+ import './base.css';