@vaadin/charts 24.8.4 → 25.0.0-alpha10

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,1224 @@
1
+ /**
2
+ * @license
3
+ * Copyright (c) 2000 - 2025 Vaadin Ltd.
4
+ *
5
+ * This program is available under Vaadin Commercial License and Service Terms.
6
+ *
7
+ *
8
+ * See https://vaadin.com/commercial-license-and-service-terms for the full
9
+ * license.
10
+ */
11
+
12
+ /**
13
+ * @license Highcharts
14
+ *
15
+ * (c) 2009-2016 Torstein Honsi
16
+ *
17
+ * License: www.highcharts.com/license
18
+ */
19
+ import '@vaadin/component-base/src/style-props.js';
20
+ import { css, unsafeCSS } from 'lit';
21
+ import { addGlobalThemeStyles } from '@vaadin/vaadin-themable-mixin/register-styles.js';
22
+
23
+ /* Tooltip styles, to support `"tooltip": { "outside": true }` config option */
24
+ // postcss-lit-disable-next-line
25
+ const tooltipStyles = (scope) => css`
26
+ ${unsafeCSS(scope)} .highcharts-tooltip {
27
+ cursor: default;
28
+ pointer-events: none;
29
+ white-space: nowrap;
30
+ transition: stroke 150ms;
31
+ filter: drop-shadow(var(--vaadin-charts-tooltip-shadow, 0 4px 8px rgba(0, 0, 0, 0.2))) !important;
32
+ }
33
+
34
+ ${unsafeCSS(scope)} .highcharts-tooltip text {
35
+ fill: var(--vaadin-charts-data-label, var(--vaadin-color));
36
+ }
37
+
38
+ ${unsafeCSS(scope)} .highcharts-tooltip .highcharts-header {
39
+ font-size: 0.85em;
40
+ color: var(--vaadin-color-subtle);
41
+ }
42
+
43
+ ${unsafeCSS(scope)} .highcharts-tooltip-box {
44
+ stroke-width: 1px;
45
+ stroke: var(--vaadin-charts-tooltip-border, var(--vaadin-border-color));
46
+ fill: var(--vaadin-charts-tooltip-background, var(--vaadin-background-color));
47
+ fill-opacity: var(--vaadin-charts-tooltip-background-opacity, 1);
48
+ }
49
+
50
+ ${unsafeCSS(scope)} .highcharts-tooltip-box .highcharts-label-box {
51
+ fill: var(--vaadin-charts-tooltip-background, var(--vaadin-background-color));
52
+ fill-opacity: var(--vaadin-charts-tooltip-background-opacity, 1);
53
+ stroke: var(--vaadin-charts-tooltip-border, var(--vaadin-border-color));
54
+ }
55
+
56
+ ${unsafeCSS(scope)} .highcharts-tooltip-header {
57
+ stroke-width: 1px;
58
+ stroke: color-mix(in srgb, var(--vaadin-charts-contrast, var(--_label)) 20%, transparent);
59
+ }
60
+
61
+ ${unsafeCSS(scope)} div.highcharts-tooltip {
62
+ filter: none;
63
+ }
64
+ `;
65
+
66
+ addGlobalThemeStyles(
67
+ 'vaadin-charts-tooltip',
68
+ css`
69
+ .highcharts-tooltip-container .highcharts-root {
70
+ overflow: visible;
71
+ font-size: var(--vaadin-charts-font-size, 0.75rem);
72
+ line-height: normal;
73
+ }
74
+ `,
75
+ tooltipStyles('.highcharts-tooltip-container'),
76
+ );
77
+
78
+ export const chartStyles = css`
79
+ :host {
80
+ display: block;
81
+ width: 100%;
82
+ overflow: hidden;
83
+ font-size: var(--vaadin-charts-font-size, 0.75rem);
84
+ line-height: normal;
85
+
86
+ /* Needs to be a color, not a background image */
87
+ --_bg: var(--vaadin-charts-background, var(--vaadin-background-color));
88
+ --_hue-scale: 180;
89
+ --_accent: var(--vaadin-charts-accent, #4172d5);
90
+ --_accent-0: var(--vaadin-charts-color-0, var(--_accent));
91
+ --_accent-1: var(
92
+ --vaadin-charts-color-1,
93
+ oklch(from var(--_accent-0) clamp(0.2, l - 0.1, 0.8) c calc(h - var(--_hue-scale) / 9 * 1))
94
+ );
95
+ --_accent-2: var(
96
+ --vaadin-charts-color-2,
97
+ oklch(from var(--_accent-0) clamp(0.2, l + 0.1, 0.8) c calc(h - var(--_hue-scale) / 9 * 2))
98
+ );
99
+ --_accent-3: var(
100
+ --vaadin-charts-color-3,
101
+ oklch(from var(--_accent-0) clamp(0.2, l - 0.1, 0.8) c calc(h - var(--_hue-scale) / 9 * 3))
102
+ );
103
+ --_accent-4: var(
104
+ --vaadin-charts-color-4,
105
+ oklch(from var(--_accent-0) clamp(0.2, l + 0.1, 0.8) c calc(h - var(--_hue-scale) / 9 * 4))
106
+ );
107
+ --_accent-5: var(
108
+ --vaadin-charts-color-5,
109
+ oklch(from var(--_accent-0) clamp(0.2, l - 0.1, 0.8) c calc(h - var(--_hue-scale) / 9 * 5))
110
+ );
111
+ --_accent-6: var(
112
+ --vaadin-charts-color-6,
113
+ oklch(from var(--_accent-0) clamp(0.2, l + 0.1, 0.8) c calc(h - var(--_hue-scale) / 9 * 6))
114
+ );
115
+ --_accent-7: var(
116
+ --vaadin-charts-color-7,
117
+ oklch(from var(--_accent-0) clamp(0.2, l - 0.1, 0.8) c calc(h - var(--_hue-scale) / 9 * 7))
118
+ );
119
+ --_accent-8: var(
120
+ --vaadin-charts-color-8,
121
+ oklch(from var(--_accent-0) clamp(0.2, l + 0.1, 0.8) c calc(h - var(--_hue-scale) / 9 * 8))
122
+ );
123
+ --_accent-9: var(
124
+ --vaadin-charts-color-9,
125
+ oklch(from var(--_accent-0) clamp(0.2, l - 0.1, 0.8) c calc(h - var(--_hue-scale) / 9 * 9))
126
+ );
127
+
128
+ --_accent-0-label: oklch(from var(--_accent-0) clamp(0, (0.62 - l) * 1000, 1) 0 0);
129
+ --_accent-1-label: oklch(from var(--_accent-1) clamp(0, (0.62 - l) * 1000, 1) 0 0);
130
+ --_accent-2-label: oklch(from var(--_accent-2) clamp(0, (0.62 - l) * 1000, 1) 0 0);
131
+ --_accent-3-label: oklch(from var(--_accent-3) clamp(0, (0.62 - l) * 1000, 1) 0 0);
132
+ --_accent-4-label: oklch(from var(--_accent-4) clamp(0, (0.62 - l) * 1000, 1) 0 0);
133
+ --_accent-5-label: oklch(from var(--_accent-5) clamp(0, (0.62 - l) * 1000, 1) 0 0);
134
+ --_accent-6-label: oklch(from var(--_accent-6) clamp(0, (0.62 - l) * 1000, 1) 0 0);
135
+ --_accent-7-label: oklch(from var(--_accent-7) clamp(0, (0.62 - l) * 1000, 1) 0 0);
136
+ --_accent-8-label: oklch(from var(--_accent-8) clamp(0, (0.62 - l) * 1000, 1) 0 0);
137
+ --_accent-9-label: oklch(from var(--_accent-9) clamp(0, (0.62 - l) * 1000, 1) 0 0);
138
+
139
+ --_accent-positive: light-dark(#19b156, #1ccc62);
140
+ --_accent-negative: light-dark(#dc0611, #f7353f);
141
+
142
+ --_label: var(--vaadin-charts-label, var(--vaadin-color));
143
+ --_secondary-label: var(--vaadin-charts-secondary-label, var(--vaadin-color-subtle));
144
+ --_disabled-label: var(--vaadin-charts-disabled-label, var(--vaadin-color-disabled));
145
+ --_point-border: var(--vaadin-charts-point-border, var(--_bg));
146
+ --_axis-line: var(--vaadin-charts-axis-line, var(--vaadin-border-color));
147
+ --_axis-title: var(--vaadin-charts-axis-title, var(--_secondary-label));
148
+ --_axis-label: var(--vaadin-charts-axis-label, var(--_secondary-label));
149
+ --_grid-line: var(--vaadin-charts-grid-line, var(--vaadin-border-color));
150
+ --_minor-grid-line: var(
151
+ --vaadin-charts-minor-grid-line,
152
+ color-mix(in srgb, var(--vaadin-border-color) 60%, transparent)
153
+ );
154
+ --_data-label: var(--vaadin-charts-data-label, var(--_label));
155
+ }
156
+
157
+ /* Safari 17 doesn't support relative colors from light-dark() */
158
+ @supports not (color: oklch(from light-dark(red, red) l c h)) {
159
+ :host {
160
+ /* Safari 17 wants degrees instead of raw numbers */
161
+ --_hue-scale: 180deg;
162
+ }
163
+ }
164
+
165
+ :host([hidden]) {
166
+ display: none !important;
167
+ }
168
+
169
+ .highcharts-container {
170
+ position: relative;
171
+ overflow: hidden;
172
+ width: 100%;
173
+ height: 100%;
174
+ text-align: left;
175
+ z-index: 0;
176
+ -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
177
+ }
178
+
179
+ :where([styled-mode]) .highcharts-root {
180
+ display: block;
181
+ }
182
+
183
+ :where([styled-mode]) .highcharts-root text {
184
+ stroke-width: 0;
185
+ }
186
+
187
+ :where([styled-mode]) .highcharts-strong {
188
+ font-weight: 600;
189
+ }
190
+
191
+ :where([styled-mode]) .highcharts-emphasized {
192
+ font-style: italic;
193
+ }
194
+
195
+ :where([styled-mode]) .highcharts-anchor {
196
+ cursor: pointer;
197
+ }
198
+
199
+ :where([styled-mode]) .highcharts-background {
200
+ fill: var(--_bg);
201
+ }
202
+
203
+ :where([styled-mode]) .highcharts-plot-border,
204
+ :where([styled-mode]) .highcharts-plot-background {
205
+ fill: none;
206
+ }
207
+
208
+ :where([styled-mode]) .highcharts-label-box {
209
+ fill: none;
210
+ }
211
+
212
+ :where([styled-mode]) .highcharts-button-box {
213
+ fill: inherit;
214
+ rx: var(--vaadin-charts-button-border-radius, var(--vaadin-radius-m));
215
+ ry: var(--vaadin-charts-button-border-radius, var(--vaadin-radius-m));
216
+ }
217
+
218
+ :where([styled-mode]) .highcharts-tracker-line {
219
+ stroke-linejoin: round;
220
+ stroke: rgba(192, 192, 192, 0.0001);
221
+ stroke-width: 22;
222
+ fill: none;
223
+ }
224
+
225
+ :where([styled-mode]) .highcharts-tracker-area {
226
+ fill: rgba(192, 192, 192, 0.0001);
227
+ stroke-width: 0;
228
+ }
229
+
230
+ /* Titles */
231
+ :where([styled-mode]) .highcharts-title {
232
+ fill: var(--vaadin-charts-title-label, var(--_label));
233
+ font-size: 1.5em;
234
+ font-weight: 600;
235
+ }
236
+
237
+ :where([styled-mode]) .highcharts-subtitle {
238
+ fill: var(--_secondary-label);
239
+ }
240
+
241
+ /* Axes */
242
+ :where([styled-mode]) .highcharts-axis-line {
243
+ fill: none;
244
+ stroke: var(--_axis-line);
245
+ }
246
+
247
+ :where([styled-mode]) .highcharts-yaxis .highcharts-axis-line {
248
+ stroke-width: 0;
249
+ }
250
+
251
+ :where([styled-mode]) .highcharts-axis-title {
252
+ fill: var(--_axis-title);
253
+ }
254
+
255
+ :where([styled-mode]) .highcharts-axis-labels {
256
+ fill: var(--_axis-label);
257
+ cursor: default;
258
+ font-size: 0.9em;
259
+ }
260
+
261
+ :where([styled-mode]) .highcharts-grid-line {
262
+ fill: none;
263
+ stroke: var(--_grid-line);
264
+ }
265
+
266
+ :where([styled-mode]) .highcharts-xaxis-grid .highcharts-grid-line {
267
+ stroke-width: var(--vaadin-charts-xaxis-line-width, 0);
268
+ }
269
+
270
+ :where([styled-mode]) .highcharts-tick {
271
+ stroke: var(--_grid-line);
272
+ }
273
+
274
+ :where([styled-mode]) .highcharts-yaxis .highcharts-tick {
275
+ stroke-width: 0;
276
+ }
277
+
278
+ :where([styled-mode]) .highcharts-minor-grid-line {
279
+ stroke: var(--_minor-grid-line);
280
+ }
281
+
282
+ :where([styled-mode]) .highcharts-crosshair-thin {
283
+ stroke-width: 1px;
284
+ stroke: var(--_grid-line);
285
+ }
286
+
287
+ :where([styled-mode]) .highcharts-crosshair-category {
288
+ stroke: var(--_accent-0);
289
+ stroke-opacity: 0.25;
290
+ }
291
+
292
+ /* Credits */
293
+ :where([styled-mode]) .highcharts-credits {
294
+ cursor: pointer;
295
+ fill: var(--_disabled-label);
296
+ font-size: 0.7em;
297
+ transition:
298
+ fill 250ms,
299
+ font-size 250ms;
300
+ }
301
+
302
+ :where([styled-mode]) .highcharts-credits:hover {
303
+ fill: black;
304
+ font-size: 1em;
305
+ }
306
+
307
+ /* Tooltip */
308
+ ${unsafeCSS(tooltipStyles(':where([styled-mode])'))};
309
+
310
+ :where([styled-mode]) .highcharts-selection-marker {
311
+ fill: var(--_accent-0);
312
+ fill-opacity: 0.25;
313
+ }
314
+
315
+ :where([styled-mode]) .highcharts-graph {
316
+ fill: none;
317
+ stroke-width: var(--vaadin-chart-graph-stroke-width, 2);
318
+ stroke-linecap: round;
319
+ stroke-linejoin: round;
320
+ }
321
+
322
+ :where([styled-mode]) .highcharts-state-hover .highcharts-graph {
323
+ stroke-width: calc(var(--vaadin-chart-graph-stroke-width, 2) + 1);
324
+ }
325
+
326
+ :where([styled-mode]) .highcharts-point-inactive {
327
+ opacity: 0.2;
328
+ transition: opacity 50ms;
329
+ /* quick in */
330
+ }
331
+
332
+ :where([styled-mode]) .highcharts-series-inactive {
333
+ opacity: 0.2;
334
+ transition: opacity 50ms;
335
+ /* quick in */
336
+ }
337
+
338
+ :where([styled-mode]) .highcharts-state-hover path {
339
+ transition: stroke-width 50ms;
340
+ /* quick in */
341
+ }
342
+
343
+ :where([styled-mode]) .highcharts-state-normal path {
344
+ transition: stroke-width 250ms;
345
+ /* slow out */
346
+ }
347
+
348
+ /* Legend hover affects points and series */
349
+ :where([styled-mode]) g.highcharts-series,
350
+ :where([styled-mode]) .highcharts-point,
351
+ :where([styled-mode]) .highcharts-markers,
352
+ :where([styled-mode]) .highcharts-data-labels {
353
+ transition: opacity 250ms;
354
+ }
355
+
356
+ :where([styled-mode]) .highcharts-legend-series-active g.highcharts-series:not(.highcharts-series-hover),
357
+ :where([styled-mode]) .highcharts-legend-point-active .highcharts-point:not(.highcharts-point-hover),
358
+ :where([styled-mode]) .highcharts-legend-series-active .highcharts-markers:not(.highcharts-series-hover),
359
+ :where([styled-mode]) .highcharts-legend-series-active .highcharts-data-labels:not(.highcharts-series-hover) {
360
+ opacity: 0.2;
361
+ }
362
+
363
+ /* Series options */
364
+ /* Default colors */
365
+ /* vaadin-charts custom properties */
366
+ /* Use of :where() function to avoid setting classes with high specificity */
367
+ :where([styled-mode]) .highcharts-color-0 {
368
+ fill: var(--_accent-0);
369
+ stroke: var(--_accent-0);
370
+ color: var(--_accent-0-label);
371
+ }
372
+
373
+ :where([styled-mode]) .highcharts-color-1 {
374
+ fill: var(--_accent-1);
375
+ stroke: var(--_accent-1);
376
+ color: var(--_accent-1-label);
377
+ }
378
+
379
+ :where([styled-mode]) .highcharts-color-2 {
380
+ fill: var(--_accent-2);
381
+ stroke: var(--_accent-2);
382
+ color: var(--_accent-2-label);
383
+ }
384
+
385
+ :where([styled-mode]) .highcharts-color-3 {
386
+ fill: var(--_accent-3);
387
+ stroke: var(--_accent-3);
388
+ color: var(--_accent-2-label);
389
+ }
390
+
391
+ :where([styled-mode]) .highcharts-color-4 {
392
+ fill: var(--_accent-4);
393
+ stroke: var(--_accent-4);
394
+ color: var(--_accent-4-label);
395
+ }
396
+
397
+ :where([styled-mode]) .highcharts-color-5 {
398
+ fill: var(--_accent-5);
399
+ stroke: var(--_accent-5);
400
+ color: var(--_accent-5-label);
401
+ }
402
+
403
+ :where([styled-mode]) .highcharts-color-6 {
404
+ fill: var(--_accent-6);
405
+ stroke: var(--_accent-6);
406
+ color: var(--_accent-6-label);
407
+ }
408
+
409
+ :where([styled-mode]) .highcharts-color-7 {
410
+ fill: var(--_accent-7);
411
+ stroke: var(--_accent-7);
412
+ color: var(--_accent-7-label);
413
+ }
414
+
415
+ :where([styled-mode]) .highcharts-color-8 {
416
+ fill: var(--_accent-8);
417
+ stroke: var(--_accent-8);
418
+ color: var(--_accent-8-label);
419
+ }
420
+
421
+ :where([styled-mode]) .highcharts-color-9 {
422
+ fill: var(--_accent-9);
423
+ stroke: var(--_accent-9);
424
+ color: var(--_accent-9-label);
425
+ }
426
+
427
+ :where([styled-mode]) .highcharts-data-label-color-0 {
428
+ color: var(--_accent-0-label);
429
+ }
430
+
431
+ :where([styled-mode]) .highcharts-data-label-color-1 {
432
+ color: var(--_accent-1-label);
433
+ }
434
+
435
+ :where([styled-mode]) .highcharts-data-label-color-2 {
436
+ color: var(--_accent-2-label);
437
+ }
438
+
439
+ :where([styled-mode]) .highcharts-data-label-color-3 {
440
+ color: var(--_accent-3-label);
441
+ }
442
+
443
+ :where([styled-mode]) .highcharts-data-label-color-4 {
444
+ color: var(--_accent-4-label);
445
+ }
446
+
447
+ :where([styled-mode]) .highcharts-data-label-color-5 {
448
+ color: var(--_accent-5-label);
449
+ }
450
+
451
+ :where([styled-mode]) .highcharts-data-label-color-6 {
452
+ color: var(--_accent-6-label);
453
+ }
454
+
455
+ :where([styled-mode]) .highcharts-data-label-color-7 {
456
+ color: var(--_accent-7-label);
457
+ }
458
+
459
+ :where([styled-mode]) .highcharts-data-label-color-8 {
460
+ color: var(--_accent-8-label);
461
+ }
462
+
463
+ :where([styled-mode]) .highcharts-data-label-color-9 {
464
+ color: var(--_accent-9-label);
465
+ }
466
+
467
+ :where([styled-mode]) [class*='highcharts-data-label-color-'] {
468
+ fill: currentColor;
469
+ }
470
+
471
+ /* end of vaadin-charts custom properties */
472
+
473
+ :where([styled-mode]) .highcharts-area {
474
+ fill-opacity: 0.5;
475
+ stroke-width: 0;
476
+ }
477
+
478
+ :where([styled-mode]) .highcharts-markers {
479
+ stroke-width: 1px;
480
+ stroke: var(--_bg);
481
+ }
482
+
483
+ :where([styled-mode])
484
+ .highcharts-a11y-markers-hidden
485
+ .highcharts-point:not(.highcharts-point-hover):not(.highcharts-a11y-marker-visible),
486
+ :where([styled-mode]) .highcharts-a11y-marker-hidden {
487
+ opacity: 0;
488
+ }
489
+
490
+ :where([styled-mode]) .highcharts-point {
491
+ stroke-width: 1px;
492
+ }
493
+
494
+ :where([styled-mode]) .highcharts-dense-data .highcharts-point {
495
+ stroke-width: 0;
496
+ }
497
+
498
+ :where([styled-mode]) .highcharts-data-label {
499
+ font-size: 0.9em;
500
+ font-weight: normal;
501
+ }
502
+
503
+ :where([styled-mode]) .highcharts-data-label-box {
504
+ fill: none;
505
+ stroke-width: 0;
506
+ }
507
+
508
+ :where([styled-mode]) .highcharts-data-label text,
509
+ :where([styled-mode]) text.highcharts-data-label {
510
+ fill: var(--_data-label);
511
+ }
512
+
513
+ :where([styled-mode]) .highcharts-data-label-connector {
514
+ fill: none;
515
+ }
516
+
517
+ :where([styled-mode]) .highcharts-data-label-hidden {
518
+ pointer-events: none;
519
+ }
520
+
521
+ :where([styled-mode]) .highcharts-halo {
522
+ fill-opacity: 0.25;
523
+ stroke-width: 0;
524
+ }
525
+
526
+ :where([styled-mode]) .highcharts-series:not(.highcharts-pie-series) .highcharts-point-select,
527
+ :where([styled-mode]) .highcharts-markers .highcharts-point-select {
528
+ /* TODO where are these used? */
529
+ fill: var(--_grid-line);
530
+ stroke: var(--vaadin-charts-contrast, var(--_label));
531
+ }
532
+
533
+ :where([styled-mode]) .highcharts-column-series rect.highcharts-point {
534
+ stroke: var(--_point-border);
535
+ }
536
+
537
+ :where([styled-mode]) .highcharts-column-series .highcharts-point {
538
+ transition: fill-opacity 250ms;
539
+ }
540
+
541
+ :where([styled-mode]) .highcharts-column-series .highcharts-point-hover {
542
+ fill-opacity: 0.75;
543
+ transition: fill-opacity 50ms;
544
+ }
545
+
546
+ :where([styled-mode]) .highcharts-pie-series .highcharts-point {
547
+ stroke-linejoin: round;
548
+ stroke: var(--_point-border);
549
+ }
550
+
551
+ :where([styled-mode]) .highcharts-pie-series .highcharts-point-hover {
552
+ fill-opacity: 0.75;
553
+ transition: fill-opacity 50ms;
554
+ }
555
+
556
+ :where([styled-mode]) .highcharts-funnel-series .highcharts-point {
557
+ stroke-linejoin: round;
558
+ stroke: var(--_point-border);
559
+ stroke-width: 2px;
560
+ }
561
+
562
+ :where([styled-mode]) .highcharts-funnel-series .highcharts-point-hover {
563
+ fill-opacity: 0.75;
564
+ transition: fill-opacity 50ms;
565
+ }
566
+
567
+ :where([styled-mode]) .highcharts-funnel-series .highcharts-point-select {
568
+ fill: inherit;
569
+ stroke: inherit;
570
+ }
571
+
572
+ :where([styled-mode]) .highcharts-pyramid-series .highcharts-point {
573
+ stroke-linejoin: round;
574
+ stroke: var(--_point-border);
575
+ stroke-width: 2px;
576
+ }
577
+
578
+ :where([styled-mode]) .highcharts-pyramid-series .highcharts-point-hover {
579
+ fill-opacity: 0.75;
580
+ transition: fill-opacity 50ms;
581
+ }
582
+
583
+ :where([styled-mode]) .highcharts-pyramid-series .highcharts-point-select {
584
+ fill: inherit;
585
+ stroke: inherit;
586
+ }
587
+
588
+ :where([styled-mode]) .highcharts-solidgauge-series .highcharts-point {
589
+ stroke-width: 0;
590
+ }
591
+
592
+ :where([styled-mode]) .highcharts-treemap-series .highcharts-point {
593
+ stroke-width: 2px;
594
+ stroke: var(--_point-border);
595
+ transition:
596
+ stroke 250ms,
597
+ fill 250ms,
598
+ fill-opacity 250ms;
599
+ }
600
+
601
+ :where([styled-mode]) .highcharts-treemap-series .highcharts-point-hover {
602
+ stroke-width: 0;
603
+ stroke: var(--_point-border);
604
+ fill-opacity: 0.75;
605
+ transition:
606
+ stroke 25ms,
607
+ fill 25ms,
608
+ fill-opacity 25ms;
609
+ }
610
+
611
+ :where([styled-mode]) .highcharts-treemap-series .highcharts-above-level {
612
+ display: none;
613
+ }
614
+
615
+ :where([styled-mode]) .highcharts-treemap-series .highcharts-internal-node {
616
+ fill: none;
617
+ }
618
+
619
+ :where([styled-mode]) .highcharts-treemap-series .highcharts-internal-node-interactive {
620
+ fill-opacity: 0.15;
621
+ cursor: pointer;
622
+ }
623
+
624
+ :where([styled-mode]) .highcharts-treemap-series .highcharts-internal-node-interactive:hover {
625
+ fill-opacity: 0.75;
626
+ }
627
+
628
+ :where([styled-mode]) .highcharts-treemap-series [class*='highcharts-data-label-color-'] text {
629
+ fill: inherit;
630
+ }
631
+
632
+ :where([styled-mode]) .highcharts-vector-series .highcharts-point {
633
+ fill: none;
634
+ stroke-width: 2px;
635
+ }
636
+
637
+ :where([styled-mode]) .highcharts-windbarb-series .highcharts-point {
638
+ fill: none;
639
+ stroke-width: 2px;
640
+ }
641
+
642
+ :where([styled-mode]) .highcharts-lollipop-stem {
643
+ /* TODO where is this used? */
644
+ stroke: var(--vaadin-charts-contrast, var(--_label));
645
+ }
646
+
647
+ :where([styled-mode]) .highcharts-focus-border {
648
+ fill: none;
649
+ stroke-width: 2px;
650
+ }
651
+
652
+ :where([styled-mode]) .highcharts-legend-item-hidden .highcharts-focus-border {
653
+ fill: none !important;
654
+ }
655
+
656
+ /* Legend */
657
+ :where([styled-mode]) .highcharts-legend-box {
658
+ fill: none;
659
+ stroke-width: 0;
660
+ }
661
+
662
+ :where([styled-mode]) .highcharts-legend-item > text {
663
+ fill: var(--_data-label);
664
+ font-weight: normal;
665
+ font-size: 1em;
666
+ cursor: pointer;
667
+ stroke-width: 0;
668
+ }
669
+
670
+ :where([styled-mode]) .highcharts-legend-item > .highcharts-point {
671
+ stroke-width: 0;
672
+ }
673
+
674
+ :where([styled-mode]) .highcharts-legend-item:hover text {
675
+ fill: var(--vaadin-charts-title-label, var(--_label));
676
+ }
677
+
678
+ :where([styled-mode]) .highcharts-legend-item-hidden * {
679
+ fill: var(--_disabled-label) !important;
680
+ stroke: var(--_disabled-label) !important;
681
+ transition: fill 250ms;
682
+ }
683
+
684
+ :where([styled-mode]) .highcharts-legend-nav-active {
685
+ fill: var(--vaadin-charts-button-label, var(--_label));
686
+ cursor: pointer;
687
+ }
688
+
689
+ :where([styled-mode]) .highcharts-legend-nav-inactive {
690
+ fill: var(--_disabled-label);
691
+ }
692
+
693
+ :where([styled-mode]) circle.highcharts-legend-nav-active,
694
+ :where([styled-mode]) circle.highcharts-legend-nav-inactive {
695
+ /* tracker */
696
+ fill: rgba(192, 192, 192, 0.0001);
697
+ }
698
+
699
+ :where([styled-mode]) .highcharts-legend-title-box {
700
+ fill: none;
701
+ stroke-width: 0;
702
+ }
703
+
704
+ /* Bubble legend */
705
+ :where([styled-mode]) .highcharts-bubble-legend-symbol {
706
+ stroke-width: 2;
707
+ fill-opacity: 0.5;
708
+ }
709
+
710
+ :where([styled-mode]) .highcharts-bubble-legend-connectors {
711
+ stroke-width: 1;
712
+ }
713
+
714
+ :where([styled-mode]) .highcharts-bubble-legend-labels {
715
+ fill: var(--_data-label);
716
+ }
717
+
718
+ /* Loading */
719
+ :where([styled-mode]) .highcharts-loading {
720
+ position: absolute;
721
+ background-color: var(--_bg);
722
+ opacity: 0.5;
723
+ text-align: center;
724
+ z-index: 10;
725
+ transition: opacity 250ms;
726
+ }
727
+
728
+ :where([styled-mode]) .highcharts-loading-hidden {
729
+ height: 0 !important;
730
+ opacity: 0;
731
+ overflow: hidden;
732
+ transition:
733
+ opacity 250ms,
734
+ height 250ms step-end;
735
+ }
736
+
737
+ :where([styled-mode]) .highcharts-loading-inner {
738
+ font-weight: normal;
739
+ position: relative;
740
+ top: 45%;
741
+ }
742
+
743
+ /* Plot bands and polar pane backgrounds */
744
+ :where([styled-mode]) .highcharts-plot-band,
745
+ :where([styled-mode]) .highcharts-pane {
746
+ fill: var(--vaadin-charts-contrast, var(--_label));
747
+ fill-opacity: 0.05;
748
+ }
749
+
750
+ :where([styled-mode]) .highcharts-plot-line {
751
+ fill: none;
752
+ /* TODO where is this used? */
753
+ stroke: color-mix(in srgb, var(--vaadin-charts-contrast, var(--_label)) 60%, transparent);
754
+ stroke-width: 1px;
755
+ }
756
+
757
+ :where([styled-mode]) .highcharts-plot-line-label {
758
+ fill: var(--_data-label);
759
+ }
760
+
761
+ /* Highcharts More and modules */
762
+ :where([styled-mode]) .highcharts-boxplot-box {
763
+ fill: var(--_bg);
764
+ }
765
+
766
+ :where([styled-mode]) .highcharts-boxplot-median {
767
+ stroke-width: 2px;
768
+ }
769
+
770
+ :where([styled-mode]) .highcharts-bubble-series .highcharts-point {
771
+ fill-opacity: 0.5;
772
+ }
773
+
774
+ :where([styled-mode]) .highcharts-errorbar-series .highcharts-point {
775
+ stroke: var(--vaadin-charts-contrast, var(--_label));
776
+ }
777
+
778
+ :where([styled-mode]) .highcharts-gauge-series .highcharts-data-label-box {
779
+ stroke: var(--_grid-line);
780
+ stroke-width: 1px;
781
+ }
782
+
783
+ :where([styled-mode]) .highcharts-gauge-series .highcharts-dial {
784
+ fill: var(--vaadin-charts-contrast, var(--_label));
785
+ stroke-width: 0;
786
+ }
787
+
788
+ :where([styled-mode]) .highcharts-polygon-series .highcharts-graph {
789
+ fill: inherit;
790
+ stroke-width: 0;
791
+ }
792
+
793
+ :where([styled-mode]) .highcharts-waterfall-series .highcharts-graph {
794
+ stroke: color-mix(in srgb, var(--vaadin-charts-contrast, var(--_label)) 60%, transparent);
795
+ stroke-dasharray: 1, 3;
796
+ }
797
+
798
+ :where([styled-mode]) .highcharts-sankey-series .highcharts-point {
799
+ stroke-width: 0;
800
+ }
801
+
802
+ :where([styled-mode]) .highcharts-sankey-series .highcharts-link {
803
+ transition:
804
+ fill 250ms,
805
+ fill-opacity 250ms;
806
+ fill-opacity: 0.5;
807
+ }
808
+
809
+ :where([styled-mode]) .highcharts-sankey-series .highcharts-point-hover.highcharts-link {
810
+ transition:
811
+ fill 50ms,
812
+ fill-opacity 50ms;
813
+ fill-opacity: 1;
814
+ }
815
+
816
+ :where([styled-mode]) .highcharts-venn-series .highcharts-point {
817
+ fill-opacity: 0.75;
818
+ stroke: var(--_point-border);
819
+ transition:
820
+ stroke 250ms,
821
+ fill-opacity 250ms;
822
+ }
823
+
824
+ :where([styled-mode]) .highcharts-venn-series .highcharts-point-hover {
825
+ fill-opacity: 1;
826
+ stroke: var(--_point-border);
827
+ }
828
+
829
+ /* Highstock */
830
+ :where([styled-mode]) .highcharts-navigator-mask-outside {
831
+ fill-opacity: 0;
832
+ }
833
+
834
+ :where([styled-mode]) .highcharts-navigator-mask-inside {
835
+ fill: var(--_accent-0);
836
+ /* navigator.maskFill option */
837
+ fill-opacity: 0.2;
838
+ cursor: ew-resize;
839
+ }
840
+
841
+ :where([styled-mode]) .highcharts-navigator-outline {
842
+ stroke: var(--_grid-line);
843
+ fill: none;
844
+ }
845
+
846
+ :where([styled-mode]) .highcharts-navigator-handle {
847
+ stroke: var(--_grid-line);
848
+ fill: var(--_bg);
849
+ cursor: ew-resize;
850
+ }
851
+
852
+ :where([styled-mode]) .highcharts-navigator-series {
853
+ fill: var(--_accent-1);
854
+ stroke: var(--_accent-1);
855
+ }
856
+
857
+ :where([styled-mode]) .highcharts-navigator-series .highcharts-graph {
858
+ stroke-width: 1px;
859
+ }
860
+
861
+ :where([styled-mode]) .highcharts-navigator-series .highcharts-area {
862
+ fill-opacity: 0.05;
863
+ }
864
+
865
+ :where([styled-mode]) .highcharts-navigator-xaxis .highcharts-axis-line {
866
+ stroke-width: 0;
867
+ }
868
+
869
+ :where([styled-mode]) .highcharts-navigator-xaxis .highcharts-grid-line {
870
+ stroke-width: 1px;
871
+ stroke: var(--_grid-line);
872
+ }
873
+
874
+ :where([styled-mode]) .highcharts-navigator-xaxis.highcharts-axis-labels {
875
+ fill: var(--_secondary-label);
876
+ }
877
+
878
+ :where([styled-mode]) .highcharts-navigator-yaxis .highcharts-grid-line {
879
+ stroke-width: 0;
880
+ }
881
+
882
+ :where([styled-mode]) .highcharts-scrollbar-thumb {
883
+ fill: color-mix(in srgb, var(--vaadin-charts-contrast, var(--_label)) 20%, transparent);
884
+ }
885
+
886
+ :where([styled-mode]) .highcharts-scrollbar-button {
887
+ fill: var(--_bg);
888
+ }
889
+
890
+ :where([styled-mode]) .highcharts-scrollbar-arrow {
891
+ fill: var(--_data-label);
892
+ }
893
+
894
+ :where([styled-mode]) .highcharts-scrollbar-rifles {
895
+ stroke: var(--_data-label);
896
+ stroke-width: 1px;
897
+ }
898
+
899
+ :where([styled-mode]) .highcharts-scrollbar-track {
900
+ fill: color-mix(in srgb, var(--vaadin-charts-contrast, var(--_label)) 5%, transparent);
901
+ }
902
+
903
+ :where([styled-mode]) .highcharts-button {
904
+ fill: var(--vaadin-charts-button-background, var(--vaadin-background-container));
905
+ cursor: default;
906
+ transition: fill 250ms;
907
+ }
908
+
909
+ :where([styled-mode]) .highcharts-button text {
910
+ fill: var(--vaadin-charts-button-label, var(--_label));
911
+ font-weight: 600;
912
+ }
913
+
914
+ :where([styled-mode]) .highcharts-button-hover {
915
+ transition: fill 0ms;
916
+ fill: var(--vaadin-charts-button-hover-background, var(--vaadin-background-container));
917
+ stroke-width: 0;
918
+ }
919
+
920
+ :where([styled-mode]) .highcharts-button-hover text {
921
+ fill: var(--vaadin-charts-button-label, var(--_label));
922
+ }
923
+
924
+ :where([styled-mode]) .highcharts-button-pressed {
925
+ fill: var(--vaadin-charts-button-active-background, var(--_label));
926
+ }
927
+
928
+ :where([styled-mode]) .highcharts-button-pressed text {
929
+ fill: var(--vaadin-charts-button-active-label, var(--_bg));
930
+ }
931
+
932
+ :where([styled-mode]) .highcharts-button-disabled text {
933
+ fill: var(--vaadin-charts-button-disabled-label, var(--vaadin-color-disabled));
934
+ }
935
+
936
+ :where([styled-mode]) .highcharts-range-selector-buttons > :is(text, .highcharts-label) {
937
+ fill: var(--_secondary-label);
938
+ }
939
+
940
+ :where([styled-mode]) .highcharts-range-selector-buttons .highcharts-button {
941
+ stroke-width: 0;
942
+ }
943
+
944
+ :where([styled-mode]) .highcharts-range-label rect {
945
+ fill: none;
946
+ }
947
+
948
+ :where([styled-mode]) .highcharts-range-label text {
949
+ fill: var(--_secondary-label);
950
+ }
951
+
952
+ :where([styled-mode]) .highcharts-range-input rect {
953
+ fill: var(--vaadin-charts-range-input-background, var(--vaadin-background-container));
954
+ rx: var(--vaadin-charts-button-border-radius, var(--vaadin-radius-m));
955
+ ry: var(--vaadin-charts-button-border-radius, var(--vaadin-radius-m));
956
+ transition: fill 250ms;
957
+ }
958
+
959
+ :where([styled-mode]) .highcharts-range-input:hover rect {
960
+ fill: var(--vaadin-charts-range-input-background-hover, var(--vaadin-background-container));
961
+ }
962
+
963
+ :where([styled-mode]) .highcharts-range-input text {
964
+ fill: var(--_data-label);
965
+ }
966
+
967
+ :where([styled-mode]) input.highcharts-range-selector {
968
+ position: absolute;
969
+ border: 0;
970
+ width: 1px;
971
+ /* Chrome needs a pixel to see it */
972
+ height: 1px;
973
+ padding: 0;
974
+ text-align: center;
975
+ left: -9em;
976
+ /* #4798 */
977
+ }
978
+
979
+ :where([styled-mode]) .highcharts-crosshair-label text {
980
+ fill: var(--_bg);
981
+ font-size: 1.1em;
982
+ }
983
+
984
+ :where([styled-mode]) .highcharts-crosshair-label .highcharts-label-box {
985
+ fill: inherit;
986
+ }
987
+
988
+ :where([styled-mode]) .highcharts-candlestick-series .highcharts-point {
989
+ stroke: var(--vaadin-charts-candlestick-line, var(--vaadin-border-color-strong));
990
+ stroke-width: 1px;
991
+ }
992
+
993
+ :where([styled-mode]) .highcharts-candlestick-series .highcharts-point-up {
994
+ fill: var(--_accent-positive);
995
+ }
996
+
997
+ :where([styled-mode]) .highcharts-candlestick-series .highcharts-point-down {
998
+ fill: var(--_accent-negative);
999
+ }
1000
+
1001
+ :where([styled-mode]) .highcharts-ohlc-series .highcharts-point-hover {
1002
+ stroke-width: 3px;
1003
+ }
1004
+
1005
+ :where([styled-mode]) .highcharts-flags-series .highcharts-point .highcharts-label-box {
1006
+ stroke: var(--_grid-line);
1007
+ fill: var(--_bg);
1008
+ transition: fill 250ms;
1009
+ }
1010
+
1011
+ :where([styled-mode]) .highcharts-flags-series .highcharts-point-hover .highcharts-label-box {
1012
+ stroke: color-mix(in srgb, var(--vaadin-charts-contrast, var(--_label)) 60%, transparent);
1013
+ fill: var(--_bg);
1014
+ }
1015
+
1016
+ :where([styled-mode]) .highcharts-flags-series .highcharts-point text {
1017
+ fill: var(--_data-label);
1018
+ font-size: 0.9em;
1019
+ font-weight: normal;
1020
+ }
1021
+
1022
+ :where([styled-mode]) .highcharts-flags-series .highcharts-point-hover text {
1023
+ fill: var(--vaadin-charts-title-label, var(--_label));
1024
+ }
1025
+
1026
+ /* Highmaps */
1027
+ :where([styled-mode]) .highcharts-map-series .highcharts-point {
1028
+ transition:
1029
+ fill 500ms,
1030
+ fill-opacity 500ms,
1031
+ stroke-width 250ms;
1032
+ stroke: color-mix(in srgb, var(--vaadin-charts-contrast, var(--_label)) 20%, transparent);
1033
+ }
1034
+
1035
+ :where([styled-mode]) .highcharts-map-series .highcharts-point-hover {
1036
+ transition:
1037
+ fill 0ms,
1038
+ fill-opacity 0ms;
1039
+ fill-opacity: 0.5;
1040
+ stroke-width: 2px;
1041
+ }
1042
+
1043
+ :where([styled-mode]) .highcharts-mapline-series .highcharts-point {
1044
+ fill: none;
1045
+ }
1046
+
1047
+ :where([styled-mode]) .highcharts-heatmap-series .highcharts-point {
1048
+ stroke-width: 0;
1049
+ }
1050
+
1051
+ :where([styled-mode]) .highcharts-map-navigation {
1052
+ font-size: 1.3em;
1053
+ font-weight: normal;
1054
+ text-align: center;
1055
+ }
1056
+
1057
+ :where([styled-mode]) .highcharts-coloraxis {
1058
+ stroke-width: 0;
1059
+ }
1060
+
1061
+ :where([styled-mode]) .highcharts-coloraxis-grid .highcharts-grid-line {
1062
+ stroke: var(--_bg);
1063
+ }
1064
+
1065
+ :where([styled-mode]) .highcharts-coloraxis-marker {
1066
+ fill: var(--_axis-label);
1067
+ stroke-width: 0;
1068
+ }
1069
+
1070
+ :where([styled-mode]) .highcharts-null-point {
1071
+ fill: transparent;
1072
+ stroke: var(--vaadin-border-color);
1073
+ }
1074
+
1075
+ /* 3d charts */
1076
+ :where([styled-mode]) .highcharts-3d-frame {
1077
+ fill: transparent;
1078
+ }
1079
+
1080
+ /* Exporting module */
1081
+ :where([styled-mode]) .highcharts-contextbutton {
1082
+ fill: #fff;
1083
+ /* needed to capture hover */
1084
+ stroke: none;
1085
+ stroke-linecap: round;
1086
+ }
1087
+
1088
+ :where([styled-mode]) .highcharts-contextbutton:hover {
1089
+ fill: #e6e6e6;
1090
+ stroke: #e6e6e6;
1091
+ }
1092
+
1093
+ :where([styled-mode]) .highcharts-button-symbol {
1094
+ stroke: var(--_secondary-label);
1095
+ stroke-width: 3px;
1096
+ }
1097
+
1098
+ :where([styled-mode]) .highcharts-menu {
1099
+ border: 1px solid #999;
1100
+ background: #fff;
1101
+ padding: 5px 0;
1102
+ box-shadow: 3px 3px 10px #888;
1103
+ }
1104
+
1105
+ :where([styled-mode]) .highcharts-menu-item {
1106
+ padding: 0.5em 1em;
1107
+ background: none;
1108
+ color: var(--vaadin-charts-button-label, var(--_label));
1109
+ cursor: pointer;
1110
+ transition:
1111
+ background 250ms,
1112
+ color 250ms;
1113
+ }
1114
+
1115
+ :where([styled-mode]) .highcharts-menu-item:hover {
1116
+ background: #335cad;
1117
+ color: #fff;
1118
+ }
1119
+
1120
+ /* Drilldown module */
1121
+ :where([styled-mode]) .highcharts-drilldown-point {
1122
+ cursor: pointer;
1123
+ }
1124
+
1125
+ :where([styled-mode]) .highcharts-drilldown-data-label text,
1126
+ :where([styled-mode]) text.highcharts-drilldown-data-label,
1127
+ :where([styled-mode]) .highcharts-drilldown-axis-label {
1128
+ cursor: pointer;
1129
+ fill: var(--vaadin-charts-button-label, var(--_label));
1130
+ font-weight: normal;
1131
+ text-decoration: underline;
1132
+ }
1133
+
1134
+ /* No-data module */
1135
+ :where([styled-mode]) .highcharts-no-data text {
1136
+ font-weight: normal;
1137
+ font-size: 1rem;
1138
+ fill: var(--_secondary-label);
1139
+ }
1140
+
1141
+ /* Drag-panes module */
1142
+ :where([styled-mode]) .highcharts-axis-resizer {
1143
+ cursor: ns-resize;
1144
+ stroke: black;
1145
+ stroke-width: 2px;
1146
+ }
1147
+
1148
+ /* Bullet type series */
1149
+ :where([styled-mode]) .highcharts-bullet-target {
1150
+ stroke-width: 0;
1151
+ }
1152
+
1153
+ /* Lineargauge type series */
1154
+ :where([styled-mode]) .highcharts-lineargauge-target {
1155
+ stroke-width: 1px;
1156
+ stroke: color-mix(in srgb, var(--vaadin-charts-contrast, var(--_label)) 60%, transparent);
1157
+ }
1158
+
1159
+ :where([styled-mode]) .highcharts-lineargauge-target-line {
1160
+ stroke-width: 1px;
1161
+ stroke: color-mix(in srgb, var(--vaadin-charts-contrast, var(--_label)) 60%, transparent);
1162
+ }
1163
+
1164
+ /* Annotations module */
1165
+ :where([styled-mode]) .highcharts-annotation-label-box {
1166
+ stroke-width: 1px;
1167
+ stroke: var(--vaadin-charts-contrast, var(--_label));
1168
+ fill: var(--vaadin-charts-contrast, var(--_label));
1169
+ fill-opacity: 0.75;
1170
+ }
1171
+
1172
+ :where([styled-mode]) .highcharts-annotation-label text {
1173
+ fill: var(--_disabled-label);
1174
+ }
1175
+
1176
+ /* Gantt */
1177
+ :where([styled-mode]) .highcharts-treegrid-node-collapsed,
1178
+ :where([styled-mode]) .highcharts-treegrid-node-expanded {
1179
+ cursor: pointer;
1180
+ }
1181
+
1182
+ :where([styled-mode]) .highcharts-point-connecting-path {
1183
+ fill: none;
1184
+ }
1185
+
1186
+ :where([styled-mode]) .highcharts-grid-axis .highcharts-tick {
1187
+ stroke-width: 1px;
1188
+ }
1189
+
1190
+ :where([styled-mode]) .highcharts-grid-axis .highcharts-axis-line {
1191
+ stroke-width: 1px;
1192
+ }
1193
+
1194
+ :where([styled-mode]) .highcharts-organization-series .highcharts-link {
1195
+ stroke: var(--vaadin-charts-org-line, color-mix(in srgb, var(--_label) 50%, var(--_bg)));
1196
+ stroke-width: var(--vaadin-charts-org-line-width, 1);
1197
+ }
1198
+
1199
+ /* Workaround for https://github.com/highcharts/highcharts/issues/22490 */
1200
+ :where([styled-mode]) .highcharts-gantt-series .highcharts-partfill-overlay {
1201
+ fill: hsla(0, 0%, 0%, 0.3);
1202
+ stroke: hsla(0, 0%, 0%, 0.3);
1203
+ }
1204
+
1205
+ /* RTL styles */
1206
+ :host([dir='rtl']) :where([styled-mode]) .highcharts-container {
1207
+ text-align: right;
1208
+ }
1209
+
1210
+ :host([dir='rtl']) :where([styled-mode]) input.highcharts-range-selector {
1211
+ left: auto;
1212
+ right: -9em;
1213
+ }
1214
+
1215
+ :host([dir='rtl']) :where([styled-mode]) .highcharts-menu {
1216
+ box-shadow: -3px 3px 10px #888;
1217
+ }
1218
+
1219
+ /* https://github.com/highcharts/highcharts/issues/16282 */
1220
+ /* without this the resize callback always calls __reflow */
1221
+ ul[aria-hidden='false'] {
1222
+ margin: 0;
1223
+ }
1224
+ `;