pyvis-optimized 4.3.1__py3-none-any.whl

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.
pyvis/shiny/styles.css ADDED
@@ -0,0 +1,382 @@
1
+ /* PyVis Shiny Integration Styles */
2
+
3
+ /* === Theme Variables === */
4
+ :root,
5
+ .pyvis-theme-light {
6
+ --pyvis-bg: #ffffff;
7
+ --pyvis-border: #dee2e6;
8
+ --pyvis-control-bg: #f8f9fa;
9
+ --pyvis-control-hover: #e9ecef;
10
+ --pyvis-text: #333333;
11
+ --pyvis-text-muted: #6c757d;
12
+ --pyvis-accent: #0d6efd;
13
+ --pyvis-accent-hover: #0b5ed7;
14
+ --pyvis-shadow: rgba(0, 0, 0, 0.1);
15
+ --pyvis-focus-ring: rgba(13, 110, 253, 0.15);
16
+ --pyvis-radius: 6px;
17
+ }
18
+
19
+ .pyvis-theme-dark {
20
+ --pyvis-bg: #1e1e1e;
21
+ --pyvis-border: #444444;
22
+ --pyvis-control-bg: #2d2d2d;
23
+ --pyvis-control-hover: #3d3d3d;
24
+ --pyvis-text: #e0e0e0;
25
+ --pyvis-text-muted: #aaaaaa;
26
+ --pyvis-accent: #58a6ff;
27
+ --pyvis-accent-hover: #79b8ff;
28
+ --pyvis-shadow: rgba(0, 0, 0, 0.3);
29
+ --pyvis-focus-ring: rgba(88, 166, 255, 0.2);
30
+ --pyvis-radius: 6px;
31
+ }
32
+
33
+ /* === Container === */
34
+ .pyvis-container {
35
+ display: flex;
36
+ flex-direction: column;
37
+ background: var(--pyvis-bg);
38
+ border: 1px solid var(--pyvis-border);
39
+ border-radius: var(--pyvis-radius);
40
+ overflow: hidden;
41
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
42
+ color: var(--pyvis-text);
43
+ }
44
+
45
+ .pyvis-container.pyvis-fill {
46
+ height: 100%;
47
+ width: 100%;
48
+ }
49
+
50
+ /* === Toolbar === */
51
+ .pyvis-toolbar {
52
+ display: flex;
53
+ align-items: center;
54
+ gap: 8px;
55
+ padding: 6px 10px;
56
+ background: var(--pyvis-control-bg);
57
+ border-bottom: 1px solid var(--pyvis-border);
58
+ flex-shrink: 0;
59
+ flex-wrap: wrap;
60
+ }
61
+
62
+ .pyvis-toolbar-separator {
63
+ width: 1px;
64
+ height: 20px;
65
+ background: var(--pyvis-border);
66
+ margin: 0 4px;
67
+ }
68
+
69
+ /* === Search === */
70
+ .pyvis-search {
71
+ display: flex;
72
+ align-items: center;
73
+ gap: 4px;
74
+ flex: 1;
75
+ max-width: 280px;
76
+ }
77
+
78
+ .pyvis-search input {
79
+ flex: 1;
80
+ padding: 4px 8px;
81
+ border: 1px solid var(--pyvis-border);
82
+ border-radius: 4px;
83
+ font-size: 13px;
84
+ background: var(--pyvis-bg);
85
+ color: var(--pyvis-text);
86
+ outline: none;
87
+ }
88
+
89
+ .pyvis-search input:focus {
90
+ border-color: var(--pyvis-accent);
91
+ box-shadow: 0 0 0 2px var(--pyvis-focus-ring);
92
+ }
93
+
94
+ .pyvis-search-count {
95
+ font-size: 11px;
96
+ color: var(--pyvis-text-muted);
97
+ white-space: nowrap;
98
+ }
99
+
100
+ /* === Layout Selector === */
101
+ .pyvis-layout-select {
102
+ padding: 4px 8px;
103
+ border: 1px solid var(--pyvis-border);
104
+ border-radius: 4px;
105
+ font-size: 13px;
106
+ background: var(--pyvis-bg);
107
+ color: var(--pyvis-text);
108
+ cursor: pointer;
109
+ }
110
+
111
+ /* === Buttons === */
112
+ .pyvis-btn {
113
+ display: inline-flex;
114
+ align-items: center;
115
+ gap: 4px;
116
+ padding: 4px 10px;
117
+ border: 1px solid var(--pyvis-border);
118
+ border-radius: 4px;
119
+ background: var(--pyvis-bg);
120
+ color: var(--pyvis-text);
121
+ font-size: 13px;
122
+ cursor: pointer;
123
+ white-space: nowrap;
124
+ transition: background 0.15s;
125
+ }
126
+
127
+ .pyvis-btn:hover {
128
+ background: var(--pyvis-control-hover);
129
+ }
130
+
131
+ /* === Network Canvas === */
132
+ .pyvis-network-canvas {
133
+ flex: 1;
134
+ min-height: 200px;
135
+ position: relative;
136
+ background: var(--pyvis-bg);
137
+ }
138
+
139
+ /* === Heading === */
140
+ .pyvis-heading {
141
+ text-align: center;
142
+ padding: 8px;
143
+ margin: 0;
144
+ font-size: 16px;
145
+ font-weight: 600;
146
+ background: var(--pyvis-control-bg);
147
+ border-bottom: 1px solid var(--pyvis-border);
148
+ }
149
+
150
+ /* === Status Bar === */
151
+ .pyvis-status {
152
+ display: flex;
153
+ justify-content: space-between;
154
+ padding: 4px 10px;
155
+ font-size: 11px;
156
+ color: var(--pyvis-text-muted);
157
+ background: var(--pyvis-control-bg);
158
+ border-top: 1px solid var(--pyvis-border);
159
+ flex-shrink: 0;
160
+ }
161
+
162
+ /* === Manipulation Modals === */
163
+ .pyvis-modal-overlay {
164
+ position: absolute;
165
+ top: 0;
166
+ left: 0;
167
+ right: 0;
168
+ bottom: 0;
169
+ background: rgba(0, 0, 0, 0.4);
170
+ display: flex;
171
+ align-items: center;
172
+ justify-content: center;
173
+ z-index: 1000;
174
+ }
175
+
176
+ .pyvis-modal {
177
+ background: var(--pyvis-bg);
178
+ border: 1px solid var(--pyvis-border);
179
+ border-radius: var(--pyvis-radius);
180
+ box-shadow: 0 8px 32px var(--pyvis-shadow);
181
+ width: 450px;
182
+ max-width: 90%;
183
+ max-height: 80%;
184
+ overflow-y: auto;
185
+ font-family: inherit;
186
+ color: var(--pyvis-text);
187
+ }
188
+
189
+ .pyvis-modal-header {
190
+ display: flex;
191
+ align-items: center;
192
+ justify-content: space-between;
193
+ padding: 12px 16px;
194
+ border-bottom: 1px solid var(--pyvis-border);
195
+ background: var(--pyvis-control-bg);
196
+ border-radius: var(--pyvis-radius) var(--pyvis-radius) 0 0;
197
+ }
198
+
199
+ .pyvis-modal-header h3 {
200
+ margin: 0;
201
+ font-size: 15px;
202
+ font-weight: 600;
203
+ }
204
+
205
+ .pyvis-modal-close {
206
+ background: none;
207
+ border: none;
208
+ font-size: 20px;
209
+ cursor: pointer;
210
+ color: var(--pyvis-text-muted);
211
+ padding: 0 4px;
212
+ line-height: 1;
213
+ }
214
+
215
+ .pyvis-modal-close:hover {
216
+ color: var(--pyvis-text);
217
+ }
218
+
219
+ .pyvis-modal-body {
220
+ padding: 16px;
221
+ display: flex;
222
+ flex-direction: column;
223
+ gap: 12px;
224
+ }
225
+
226
+ .pyvis-modal-field {
227
+ display: flex;
228
+ flex-direction: column;
229
+ gap: 4px;
230
+ }
231
+
232
+ .pyvis-modal-field label {
233
+ font-size: 12px;
234
+ font-weight: 600;
235
+ color: var(--pyvis-text-muted);
236
+ text-transform: uppercase;
237
+ letter-spacing: 0.5px;
238
+ }
239
+
240
+ .pyvis-modal-field input,
241
+ .pyvis-modal-field select {
242
+ padding: 6px 10px;
243
+ border: 1px solid var(--pyvis-border);
244
+ border-radius: 4px;
245
+ font-size: 13px;
246
+ background: var(--pyvis-bg);
247
+ color: var(--pyvis-text);
248
+ outline: none;
249
+ }
250
+
251
+ .pyvis-modal-field input:focus,
252
+ .pyvis-modal-field select:focus {
253
+ border-color: var(--pyvis-accent);
254
+ box-shadow: 0 0 0 2px var(--pyvis-focus-ring);
255
+ }
256
+
257
+ .pyvis-modal-field input[type="color"] {
258
+ padding: 2px;
259
+ height: 34px;
260
+ cursor: pointer;
261
+ }
262
+
263
+ .pyvis-modal-field input[type="checkbox"] {
264
+ width: 18px;
265
+ height: 18px;
266
+ cursor: pointer;
267
+ align-self: flex-start;
268
+ }
269
+
270
+ .pyvis-modal-actions {
271
+ display: flex;
272
+ justify-content: flex-end;
273
+ gap: 8px;
274
+ padding: 12px 16px;
275
+ border-top: 1px solid var(--pyvis-border);
276
+ background: var(--pyvis-control-bg);
277
+ border-radius: 0 0 var(--pyvis-radius) var(--pyvis-radius);
278
+ }
279
+
280
+ .pyvis-modal-actions button {
281
+ padding: 6px 16px;
282
+ border: 1px solid var(--pyvis-border);
283
+ border-radius: 4px;
284
+ font-size: 13px;
285
+ cursor: pointer;
286
+ transition: background 0.15s;
287
+ }
288
+
289
+ .pyvis-modal-actions .pyvis-btn-cancel {
290
+ background: var(--pyvis-bg);
291
+ color: var(--pyvis-text);
292
+ }
293
+
294
+ .pyvis-modal-actions .pyvis-btn-cancel:hover {
295
+ background: var(--pyvis-control-hover);
296
+ }
297
+
298
+ .pyvis-modal-actions .pyvis-btn-save {
299
+ background: var(--pyvis-accent);
300
+ color: #ffffff;
301
+ border-color: var(--pyvis-accent);
302
+ }
303
+
304
+ .pyvis-modal-actions .pyvis-btn-save:hover {
305
+ background: var(--pyvis-accent-hover);
306
+ border-color: var(--pyvis-accent-hover);
307
+ }
308
+
309
+ /* === Template Strip === */
310
+ .pyvis-template-strip {
311
+ border-bottom: 1px solid var(--pyvis-border);
312
+ padding-bottom: 12px;
313
+ }
314
+
315
+ .pyvis-template-options {
316
+ display: flex;
317
+ gap: 6px;
318
+ flex-wrap: wrap;
319
+ }
320
+
321
+ .pyvis-template-chip {
322
+ display: inline-flex;
323
+ align-items: center;
324
+ gap: 5px;
325
+ padding: 4px 10px;
326
+ border: 2px solid var(--pyvis-border);
327
+ border-radius: 16px;
328
+ background: var(--pyvis-bg);
329
+ color: var(--pyvis-text);
330
+ font-size: 12px;
331
+ cursor: pointer;
332
+ transition: border-color 0.15s, background 0.15s;
333
+ }
334
+
335
+ .pyvis-template-chip:hover {
336
+ background: var(--pyvis-control-hover);
337
+ }
338
+
339
+ .pyvis-template-chip.pyvis-template-selected {
340
+ border-color: var(--pyvis-accent);
341
+ background: var(--pyvis-control-hover);
342
+ }
343
+
344
+ .pyvis-template-swatch {
345
+ display: inline-block;
346
+ width: 12px;
347
+ height: 12px;
348
+ border-radius: 50%;
349
+ border: 1px solid var(--pyvis-border);
350
+ }
351
+
352
+ /* === Responsive === */
353
+ @media (max-width: 600px) {
354
+ .pyvis-toolbar {
355
+ gap: 4px;
356
+ padding: 4px 6px;
357
+ }
358
+
359
+ .pyvis-search {
360
+ max-width: 100%;
361
+ order: 99; /* Push search to its own row */
362
+ }
363
+
364
+ .pyvis-toolbar-separator {
365
+ display: none;
366
+ }
367
+
368
+ .pyvis-btn {
369
+ padding: 4px 6px;
370
+ font-size: 12px;
371
+ }
372
+
373
+ .pyvis-modal {
374
+ width: calc(100% - 24px);
375
+ max-height: 90%;
376
+ }
377
+
378
+ .pyvis-status {
379
+ flex-wrap: wrap;
380
+ gap: 4px;
381
+ }
382
+ }