dsp-semactic 0.5.0 → 0.5.2

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/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "dsp-semactic",
3
3
  "private": false,
4
- "version": "0.5.0",
4
+ "version": "0.5.2",
5
5
  "type": "module",
6
6
  "main": "dist/vue-design-system.umd.js",
7
7
  "module": "dist/vue-design-system.es.js",
@@ -12,7 +12,8 @@
12
12
  }
13
13
  },
14
14
  "files": [
15
- "dist"
15
+ "dist",
16
+ "src/styles/"
16
17
  ],
17
18
  "scripts": {
18
19
  "dev": "vite",
@@ -0,0 +1,1058 @@
1
+ .dss-custom-chart-container {
2
+ position: relative;
3
+ font-family: Arial, sans-serif;
4
+ background: white;
5
+ border-radius: 8px;
6
+ overflow: visible;
7
+ margin: .5rem;
8
+ }
9
+
10
+ .dss-chart-header{
11
+ display: flex;
12
+ justify-content: space-between;
13
+ align-items: center;
14
+ }
15
+
16
+ .dss-chart-title {
17
+ text-align: left;
18
+ font-size: 18px;
19
+ font-weight: bold;
20
+ color: #333;
21
+ margin: 15px 0 5px 0;
22
+ padding: 1rem 0 0 1.5rem;
23
+ }
24
+
25
+ .dss-chart-subtitle {
26
+ text-align: left;
27
+ font-size: 14px;
28
+ color: #666;
29
+ margin-bottom: 10px;
30
+ padding-left: 1.5rem;
31
+ }
32
+
33
+ .dss-chart-svg {
34
+ display: block;
35
+ width: 100%;
36
+ height: 80%;
37
+ position: relative;
38
+ }
39
+
40
+ .dss-chart-svg.has-watermark {
41
+ background-image: var(--watermark-url);
42
+ background-repeat: no-repeat;
43
+ background-position: center;
44
+ background-size: var(--watermark-size, 30%);
45
+ background-blend-mode: multiply;
46
+ }
47
+
48
+ .dss-chart-svg.has-watermark::before {
49
+ content: '';
50
+ position: absolute;
51
+ top: 0;
52
+ left: 0;
53
+ right: 0;
54
+ bottom: 0;
55
+ background-image: var(--watermark-url);
56
+ background-repeat: no-repeat;
57
+ background-position: center;
58
+ background-size: var(--watermark-size, 30%);
59
+ opacity: var(--watermark-opacity, 0.05);
60
+ pointer-events: none;
61
+ z-index: 1;
62
+ }
63
+
64
+ .dss-chart-legend {
65
+ display: flex;
66
+ justify-content: flex-end;
67
+ flex-wrap: wrap;
68
+ gap: .5rem;
69
+ padding-right: 1rem;
70
+ max-width: 50%;
71
+ margin-top: 1rem;
72
+ }
73
+
74
+ .dss-legend-item {
75
+ display: flex;
76
+ align-items: center;
77
+ gap: .3rem;
78
+ cursor: pointer;
79
+ transition: all 0.3s ease;
80
+ padding: 4px 8px;
81
+ border-radius: 4px;
82
+ }
83
+
84
+ .dss-legend-item.dss-legend-dimmed {
85
+ opacity: 0.5;
86
+ transform: none;
87
+ }
88
+
89
+ .dss-legend-color {
90
+ width: 12px;
91
+ height: 12px;
92
+ border-radius: 50%;
93
+ transition: transform 0.3s ease;
94
+ }
95
+
96
+ .dss-legend-item.dss-legend-hovered .dss-legend-color {
97
+ transform: scale(1.2);
98
+ }
99
+
100
+ .dss-legend-text {
101
+ font-size: 14px;
102
+ transition: font-weight 0.3s ease;
103
+ }
104
+
105
+ .dss-legend-item.dss-legend-hovered .dss-legend-text {
106
+ font-weight: 600;
107
+ }
108
+
109
+ .dss-legend-item.dss-legend-hidden {
110
+ opacity: 0.5 !important;
111
+ text-decoration: line-through !important;
112
+ filter: none !important;
113
+ transform: none !important;
114
+ display: flex !important;
115
+ visibility: visible !important;
116
+ }
117
+
118
+
119
+ .dss-chart-tooltip {
120
+ position: absolute;
121
+ background: rgba(0, 0, 0, 0.8);
122
+ color: white;
123
+ padding: 8px 12px;
124
+ border-radius: 4px;
125
+ font-size: 12px;
126
+ pointer-events: none;
127
+ z-index: 9999;
128
+ min-width: 120px;
129
+ max-width: 200px;
130
+ word-wrap: break-word;
131
+ white-space: nowrap;
132
+ }
133
+
134
+ .dss-chart-tooltip.dss-crosshair-tooltip {
135
+ background: rgba(0, 0, 0, 0.9);
136
+ padding: 10px 14px;
137
+ min-width: 150px;
138
+ max-width: 250px;
139
+ white-space: normal;
140
+ }
141
+
142
+ .dss-tooltip-title {
143
+ font-weight: bold;
144
+ margin-bottom: 6px;
145
+ border-bottom: 1px solid rgba(255, 255, 255, 0.2);
146
+ padding-bottom: 4px;
147
+ }
148
+
149
+ .dss-tooltip-value {
150
+ font-size: 11px;
151
+ opacity: 0.9;
152
+ }
153
+
154
+ .dss-tooltip-series {
155
+ display: flex;
156
+ align-items: center;
157
+ gap: 6px;
158
+ margin: 4px 0;
159
+ font-size: 11px;
160
+ }
161
+
162
+ .dss-tooltip-series-indicator {
163
+ width: 8px;
164
+ height: 8px;
165
+ border-radius: 50%;
166
+ flex-shrink: 0;
167
+ }
168
+
169
+ .dss-tooltip-series-name {
170
+ color: rgba(255, 255, 255, 0.8);
171
+ flex-shrink: 0;
172
+ }
173
+
174
+ .dss-tooltip-series-value {
175
+ font-weight: bold;
176
+ margin-left: auto;
177
+ }
178
+
179
+ .dss-crosshair {
180
+ pointer-events: none;
181
+ }
182
+
183
+ .dss-crosshair line,
184
+ .dss-crosshair circle {
185
+ transition: opacity 0.1s ease;
186
+ }
187
+
188
+ .dss-zoom-indicator {
189
+ position: absolute;
190
+ top: 20%;
191
+ right: 10px;
192
+ background: rgba(0, 0, 0, 0.8);
193
+ color: white;
194
+ padding: 8px 12px;
195
+ border-radius: 4px;
196
+ font-size: 12px;
197
+ cursor: pointer;
198
+ user-select: none;
199
+ transition: background-color 0.2s ease;
200
+ z-index: 1000;
201
+ }
202
+
203
+ .dss-zoom-indicator:hover {
204
+ background: rgba(0, 0, 0, 0.9);
205
+ }
206
+
207
+ .dss-chart-svg:hover .dss-chart-data path {
208
+ transition: opacity 0.2s ease;
209
+ }
210
+
211
+ .dss-spider-chart .dss-spider-data polygon {
212
+ cursor: pointer;
213
+ transition: fill-opacity 0.2s ease;
214
+ }
215
+
216
+ .dss-spider-chart .dss-spider-data polygon:hover {
217
+ fill-opacity: 0.3 !important;
218
+ }
219
+
220
+ .dss-spider-chart .dss-spider-data circle {
221
+ cursor: pointer;
222
+ transition: r 0.2s ease;
223
+ }
224
+
225
+ .dss-spider-chart .dss-spider-data circle:hover {
226
+ r: 6;
227
+ }
228
+
229
+ .dss-spider-labels text {
230
+ user-select: none;
231
+ font-weight: 500;
232
+ }
233
+
234
+ .dss-spider-grid {
235
+ pointer-events: none;
236
+ }
237
+
238
+ .dss-chart-logos image {
239
+ border-radius: 50%;
240
+ object-fit: cover;
241
+ }
242
+
243
+ /* Hidden Series Styles */
244
+ .dss-series-hidden {
245
+ opacity: 0 !important;
246
+ pointer-events: none !important;
247
+ filter: none !important;
248
+ transform: none !important;
249
+ stroke-width: inherit !important;
250
+ fill-opacity: 0 !important;
251
+ }
252
+
253
+ .dss-chart-data .dss-series-hidden,
254
+ .dss-chart-data .dss-point-hidden,
255
+ .dss-chart-data .dss-bar-hidden,
256
+ .dss-radial-data .dss-series-hidden,
257
+ .dss-spider-data .dss-series-hidden,
258
+ .dss-spider-data .dss-point-hidden {
259
+ opacity: 0 !important;
260
+ pointer-events: none !important;
261
+ visibility: hidden !important;
262
+ }
263
+
264
+ .dss-point-hidden {
265
+ opacity: 0 !important;
266
+ pointer-events: none;
267
+ }
268
+
269
+ .dss-bar-hidden {
270
+ opacity: 0 !important;
271
+ pointer-events: none;
272
+ }
273
+
274
+ /* Hover Effect Styles */
275
+ .dss-series-highlighted {
276
+ filter: brightness(1.1);
277
+ opacity: 1 !important;
278
+ transform: scaleZ(1.1);
279
+ }
280
+
281
+ .dss-series-dimmed {
282
+ opacity: 0.3;
283
+ transition: opacity 0.3s ease;
284
+ }
285
+
286
+ .dss-point-dimmed {
287
+ opacity: 0.4;
288
+ transition: opacity 0.3s ease;
289
+ }
290
+
291
+ .dss-bar-highlighted {
292
+ filter: brightness(1.1);
293
+ transform-origin: center bottom;
294
+ }
295
+
296
+ .dss-bar-dimmed {
297
+ opacity: 0.4;
298
+ transition: opacity 0.3s ease;
299
+ }
300
+
301
+ /* Chart Animation Styles */
302
+ .dss-custom-chart-container.dss-chart-animated {
303
+ --dss-animation-duration: 1500ms;
304
+ --dss-animation-easing: ease-out;
305
+ --dss-stagger-delay: 200ms;
306
+ --dss-animation-progress: 0;
307
+ }
308
+
309
+ .dss-animate-draw .dss-chart-data path[stroke] {
310
+ stroke-dasharray: var(--dss-path-length, 1000);
311
+ stroke-dashoffset: var(--dss-path-length, 1000);
312
+ animation: drawPath var(--dss-animation-duration) var(--dss-animation-easing) forwards;
313
+ }
314
+
315
+ @keyframes drawPath {
316
+ to {
317
+ stroke-dashoffset: 0;
318
+ }
319
+ }
320
+
321
+ .dss-animate-draw .dss-chart-data path[stroke]:nth-child(1) { animation-delay: 0ms; }
322
+ .dss-animate-draw .dss-chart-data path[stroke]:nth-child(2) { animation-delay: var(--dss-stagger-delay); }
323
+ .dss-animate-draw .dss-chart-data path[stroke]:nth-child(3) { animation-delay: calc(var(--dss-stagger-delay) * 2); }
324
+ .dss-animate-draw .dss-chart-data path[stroke]:nth-child(4) { animation-delay: calc(var(--dss-stagger-delay) * 3); }
325
+ .dss-animate-draw .dss-chart-data path[stroke]:nth-child(5) { animation-delay: calc(var(--dss-stagger-delay) * 4); }
326
+
327
+ .dss-animate-fade .dss-chart-data > g > * {
328
+ opacity: 0;
329
+ animation: fadeIn var(--dss-animation-duration) var(--dss-animation-easing) forwards;
330
+ }
331
+
332
+ @keyframes fadeIn {
333
+ to {
334
+ opacity: 1;
335
+ }
336
+ }
337
+
338
+ .dss-animate-draw .dss-area-line-animated {
339
+ stroke-dasharray: var(--dss-path-length, 1000);
340
+ stroke-dashoffset: var(--dss-path-length, 1000);
341
+ animation: drawPath calc(var(--dss-animation-duration) * 0.8) var(--dss-animation-easing) forwards;
342
+ }
343
+
344
+ .dss-animate-draw .dss-area-mask-rect {
345
+ transform: translateX(calc(-1 * var(--dss-mask-width)));
346
+ animation: smoothFillRight calc(var(--dss-animation-duration) * 1.2) cubic-bezier(0.4, 0.0, 0.2, 1) forwards;
347
+ }
348
+
349
+ @keyframes smoothFillRight {
350
+ 0% {
351
+ transform: translateX(calc(-1 * var(--dss-mask-width)));
352
+ }
353
+ 100% {
354
+ transform: translateX(0);
355
+ }
356
+ }
357
+
358
+ .dss-area-fill-smooth {
359
+ transition: all 0.3s cubic-bezier(0.4, 0.0, 0.2, 1);
360
+ }
361
+
362
+ .dss-area-mask-rect {
363
+ will-change: transform;
364
+ backface-visibility: hidden;
365
+ transform-origin: left center;
366
+ }
367
+
368
+ .dss-animate-fade .dss-chart-data path:nth-child(1) { animation-delay: 0ms; }
369
+ .dss-animate-fade .dss-chart-data path:nth-child(2) { animation-delay: var(--dss-stagger-delay); }
370
+ .dss-animate-fade .dss-chart-data path:nth-child(3) { animation-delay: calc(var(--dss-stagger-delay) * 2); }
371
+
372
+ .dss-animate-fade .dss-chart-data circle {
373
+ animation-delay: calc(var(--dss-animation-duration) * 0.6);
374
+ }
375
+
376
+ .dss-animate-fade .dss-chart-data rect {
377
+ animation-delay: calc(var(--dss-stagger-delay) * 0.5);
378
+ }
379
+
380
+ .dss-animate-scale .dss-chart-data > g > * {
381
+ transform-origin: center;
382
+ transform: scale(0);
383
+ animation: scaleUp var(--dss-animation-duration) var(--dss-animation-easing) forwards;
384
+ }
385
+
386
+ @keyframes scaleUp {
387
+ to {
388
+ transform: scale(1);
389
+ }
390
+ }
391
+
392
+ .dss-animate-scale .dss-chart-data rect {
393
+ transform-origin: center bottom;
394
+ transform: scaleY(0);
395
+ animation: scaleUpY var(--dss-animation-duration) var(--dss-animation-easing) forwards;
396
+ }
397
+
398
+ .dss-animate-scale .dss-chart-data rect {
399
+ transform-box: fill-box;
400
+ transform-origin: 50% 100%;
401
+ }
402
+
403
+ .dss-animate-scale .dss-chart-data rect,
404
+ .dss-animate-scale .dss-chart-data path[d*="M"] {
405
+ transform-box: fill-box;
406
+ transform-origin: center bottom;
407
+ transform: scaleY(0);
408
+ animation: scaleUpBarFromAxis var(--dss-animation-duration) var(--dss-animation-easing) forwards;
409
+ }
410
+
411
+ @keyframes scaleUpBarFromAxis {
412
+ from {
413
+ transform: scaleY(0);
414
+ }
415
+ to {
416
+ transform: scaleY(1);
417
+ }
418
+ }
419
+
420
+ .dss-chart-data rect,
421
+ .dss-chart-data path[d*="M"] {
422
+ transition: opacity 0.2s ease, filter 0.2s ease;
423
+ }
424
+
425
+ .dss-chart-data rect:hover,
426
+ .dss-chart-data path[d*="M"]:hover {
427
+ opacity: 0.8;
428
+ filter: brightness(1.05) drop-shadow(0 2px 6px rgba(0,0,0,0.15));
429
+ }
430
+
431
+ @keyframes scaleUpY {
432
+ to {
433
+ transform: scaleY(1);
434
+ }
435
+ }
436
+
437
+ .dss-animate-scale .dss-chart-data rect:nth-child(1) { animation-delay: 0ms; }
438
+ .dss-animate-scale .dss-chart-data rect:nth-child(2) { animation-delay: calc(var(--dss-stagger-delay) * 0.3); }
439
+ .dss-animate-scale .dss-chart-data rect:nth-child(3) { animation-delay: calc(var(--dss-stagger-delay) * 0.6); }
440
+ .dss-animate-scale .dss-chart-data rect:nth-child(4) { animation-delay: calc(var(--dss-stagger-delay) * 0.9); }
441
+ .dss-animate-scale .dss-chart-data rect:nth-child(5) { animation-delay: calc(var(--dss-stagger-delay) * 1.2); }
442
+
443
+ .dss-animate-draw .dss-radial-data path {
444
+ stroke-dasharray: 1000;
445
+ stroke-dashoffset: 1000;
446
+ animation: drawPath calc(var(--dss-animation-duration) * 0.8) var(--dss-animation-easing) forwards;
447
+ }
448
+
449
+ .dss-animate-scale .dss-radial-data path {
450
+ transform-origin: center;
451
+ transform: scale(0);
452
+ animation: scaleRotate var(--dss-animation-duration) var(--dss-animation-easing) forwards;
453
+ }
454
+
455
+ @keyframes scaleRotate {
456
+ 0% {
457
+ transform: scale(0) rotate(-90deg);
458
+ }
459
+ 100% {
460
+ transform: scale(1) rotate(0deg);
461
+ }
462
+ }
463
+
464
+ .dss-animate-fade .dss-spider-data polygon {
465
+ opacity: 0;
466
+ animation: fadeIn var(--dss-animation-duration) var(--dss-animation-easing) forwards;
467
+ }
468
+
469
+ .dss-animate-scale .dss-spider-data polygon {
470
+ transform-origin: center;
471
+ transform: scale(0);
472
+ animation: scaleUp calc(var(--dss-animation-duration) * 1.2) var(--dss-animation-easing) forwards;
473
+ }
474
+
475
+ .dss-animate-draw .dss-spider-data polygon {
476
+ stroke-dasharray: 2000;
477
+ stroke-dashoffset: 2000;
478
+ animation: drawPath calc(var(--dss-animation-duration) * 1.5) var(--dss-animation-easing) forwards;
479
+ }
480
+
481
+ .dss-animate-fade .dss-axes line,
482
+ .dss-animate-fade .dss-grid-lines line {
483
+ opacity: 0;
484
+ animation: fadeIn calc(var(--dss-animation-duration) * 0.6) var(--dss-animation-easing) forwards;
485
+ animation-delay: calc(var(--dss-animation-duration) * 0.1);
486
+ }
487
+
488
+ @keyframes scaleUpX {
489
+ to {
490
+ transform: scaleX(1);
491
+ }
492
+ }
493
+
494
+ .dss-animate-fade .dss-axis-labels text {
495
+ opacity: 0;
496
+ animation: fadeIn calc(var(--dss-animation-duration) * 0.4) var(--dss-animation-easing) forwards;
497
+ animation-delay: calc(var(--dss-animation-duration) * 0.7);
498
+ }
499
+
500
+ .dss-animate-fade .dss-chart-logos circle,
501
+ .dss-animate-fade .dss-chart-logos image {
502
+ opacity: 0;
503
+ animation: fadeIn calc(var(--dss-animation-duration) * 0.6) var(--dss-animation-easing) forwards;
504
+ animation-delay: calc(var(--dss-animation-duration) * 0.8);
505
+ }
506
+
507
+ .dss-chart-data circle {
508
+ transition: r 0.2s ease, opacity 0.2s ease, filter 0.2s ease;
509
+ }
510
+
511
+ .dss-chart-data circle:hover {
512
+ r: 6px;
513
+ filter: brightness(1.1) drop-shadow(0 2px 4px rgba(0,0,0,0.2));
514
+ }
515
+
516
+ .dss-chart-data rect {
517
+ transition: opacity 0.2s ease, filter 0.2s ease;
518
+ }
519
+
520
+ .dss-chart-data rect:hover {
521
+ opacity: 0.8;
522
+ filter: brightness(1.05) drop-shadow(0 2px 6px rgba(0,0,0,0.15));
523
+ }
524
+
525
+ .dss-chart-data path {
526
+ transition: stroke-width 0.2s ease, opacity 0.2s ease, filter 0.2s ease;
527
+ }
528
+
529
+ @media (prefers-reduced-motion: reduce) {
530
+ .dss-chart-animated * {
531
+ animation-duration: 0.01ms !important;
532
+ animation-delay: 0ms !important;
533
+ transition-duration: 0.01ms !important;
534
+ }
535
+ }
536
+
537
+ .dss-chart-animated {
538
+ will-change: transform, opacity;
539
+ }
540
+
541
+ .dss-chart-animated .dss-chart-data {
542
+ transform: translateZ(0);
543
+ backface-visibility: hidden;
544
+ perspective: 1000px;
545
+ }
546
+
547
+ .dss-is-animating {
548
+ pointer-events: none;
549
+ }
550
+
551
+ .dss-animation-complete {
552
+ pointer-events: auto;
553
+ }
554
+
555
+ .dss-animate-fade .dss-chart-title {
556
+ opacity: 0;
557
+ animation: fadeIn calc(var(--dss-animation-duration) * 0.4) var(--dss-animation-easing) forwards;
558
+ animation-delay: 0ms;
559
+ }
560
+
561
+ .dss-animate-fade .dss-chart-subtitle {
562
+ opacity: 0;
563
+ animation: fadeIn calc(var(--dss-animation-duration) * 0.4) var(--dss-animation-easing) forwards;
564
+ animation-delay: calc(var(--dss-animation-duration) * 0.1);
565
+ }
566
+
567
+ .dss-custom-chart-container {
568
+ user-select: none;
569
+ -webkit-user-select: none;
570
+ -moz-user-select: none;
571
+ -ms-user-select: none;
572
+ }
573
+
574
+ .dss-custom-chart-container[style*="cursor: grab"] {
575
+ cursor: grab !important;
576
+ }
577
+
578
+ .dss-custom-chart-container[style*="cursor: grabbing"] {
579
+ cursor: grabbing !important;
580
+ }
581
+
582
+ .dss-custom-chart-container[style*="cursor: grabbing"] * {
583
+ pointer-events: none;
584
+ }
585
+
586
+ .dss-chart-svg {
587
+ transition: none;
588
+ }
589
+
590
+ .dss-chart-data {
591
+ transition: transform 0.1s ease-out;
592
+ }
593
+
594
+ .dss-animate-fill .dss-radial-data path {
595
+ animation: none;
596
+ }
597
+
598
+ .dss-animate-fill .dss-radial-data {
599
+ clip-path: polygon(50% 50%, 50% 0%, 50% 0%, 50% 0%, 50% 0%, 50% 0%, 50% 0%, 50% 0%, 50% 50%);
600
+ animation: radialFillSweep var(--dss-animation-duration) var(--dss-animation-easing) forwards;
601
+ }
602
+
603
+ @keyframes radialFillSweep {
604
+ 0% {clip-path: polygon(50% 50%, 50% 0%, 50% 0%, 50% 50%);}
605
+ 5% {clip-path: polygon(50% 50%, 50% 0%, 70% 0%, 50% 50%);}
606
+ 10% {clip-path: polygon(50% 50%, 50% 0%, 90% 0%, 50% 50%);}
607
+ 15% {clip-path: polygon(50% 50%, 50% 0%, 100% 0%, 50% 50%);}
608
+ 20% {clip-path: polygon(50% 50%, 50% 0%, 100% 0%, 100% 30%, 50% 50%);}
609
+ 25% {clip-path: polygon(50% 50%, 50% 0%, 100% 0%, 100% 50%, 50% 50%);}
610
+ 30% {clip-path: polygon(50% 50%, 50% 0%, 100% 0%, 100% 70%, 50% 50%);}
611
+ 35% {clip-path: polygon(50% 50%, 50% 0%, 100% 0%, 100% 90%, 50% 50%);}
612
+ 40% {clip-path: polygon(50% 50%, 50% 0%, 100% 0%, 100% 100%, 50% 50%);}
613
+ 45% {clip-path: polygon(50% 50%, 50% 0%, 100% 0%, 100% 100%, 70% 100%, 50% 50%);}
614
+ 50% {clip-path: polygon(50% 50%, 50% 0%, 100% 0%, 100% 100%, 50% 100%, 50% 50%);}
615
+ 55% {clip-path: polygon(50% 50%, 50% 0%, 100% 0%, 100% 100%, 30% 100%, 50% 50%);}
616
+ 60% {clip-path: polygon(50% 50%, 50% 0%, 100% 0%, 100% 100%, 10% 100%, 50% 50%);}
617
+ 65% {clip-path: polygon(50% 50%, 50% 0%, 100% 0%, 100% 100%, 0% 100%, 50% 50%);}
618
+ 70% {clip-path: polygon(50% 50%, 50% 0%, 100% 0%, 100% 100%, 0% 100%, 0% 70%, 50% 50%);}
619
+ 75% {clip-path: polygon(50% 50%, 50% 0%, 100% 0%, 100% 100%, 0% 100%, 0% 50%, 50% 50%);}
620
+ 80% {clip-path: polygon(50% 50%, 50% 0%, 100% 0%, 100% 100%, 0% 100%, 0% 30%, 50% 50%);}
621
+ 85% {clip-path: polygon(50% 50%, 50% 0%, 100% 0%, 100% 100%, 0% 100%, 0% 10%, 50% 50%);}
622
+ 90% {clip-path: polygon(50% 50%, 50% 0%, 100% 0%, 100% 100%, 0% 100%, 0% 0%, 50% 50%);}
623
+ 95% {clip-path: polygon(50% 50%, 50% 0%, 100% 0%, 100% 100%, 0% 100%, 0% 0%, 30% 0%, 50% 50%);}
624
+ 100% {clip-path: polygon(50% 50%, 50% 0%, 100% 0%, 100% 100%, 0% 100%, 0% 0%, 50% 0%, 50% 50%);}
625
+ }
626
+
627
+ /* Context Menu Styles */
628
+ .dss-chart-context-menu {
629
+ position: fixed;
630
+ background: white;
631
+ border: 1px solid #ddd;
632
+ border-radius: 8px;
633
+ z-index: 10000;
634
+ min-width: 180px;
635
+ overflow: hidden;
636
+ animation: contextMenuFadeIn 0.15s ease-out;
637
+ padding: 4px;
638
+ font-family: Arial, sans-serif;
639
+ }
640
+
641
+ @keyframes contextMenuFadeIn {
642
+ from {
643
+ opacity: 0;
644
+ transform: scale(0.95) translateY(-5px);
645
+ }
646
+ to {
647
+ opacity: 1;
648
+ transform: scale(1) translateY(0);
649
+ }
650
+ }
651
+
652
+ .dss-context-menu-item {
653
+ display: flex;
654
+ align-items: center;
655
+ gap: 8px;
656
+ padding: 10px 14px;
657
+ cursor: pointer;
658
+ transition: background-color 0.15s ease;
659
+ font-size: 14px;
660
+ color: #333;
661
+ }
662
+
663
+ .dss-context-menu-item:hover {
664
+ background-color: #f5f5f5;
665
+ }
666
+
667
+ .dss-context-menu-icon {
668
+ font-size: 14px;
669
+ width: 16px;
670
+ display: flex;
671
+ justify-content: center;
672
+ }
673
+
674
+ .dss-context-menu-separator {
675
+ height: 1px;
676
+ background-color: #e5e5e5;
677
+ margin: 4px 0;
678
+ }
679
+
680
+ .dss-custom-menu-content {
681
+ display: flex;
682
+ align-items: center;
683
+ gap: 8px;
684
+ width: 100%;
685
+ }
686
+
687
+ .dss-custom-menu-content * {
688
+ pointer-events: none;
689
+ }
690
+
691
+ .dss-context-menu-item.dss-custom-styled {
692
+ padding: 0;
693
+ }
694
+
695
+ .dss-context-menu-item.dss-custom-styled .dss-custom-menu-content {
696
+ padding: 8px 12px;
697
+ width: 100%;
698
+ }
699
+
700
+ /* Marker Modal Styles */
701
+ .dss-marker-modal-overlay {
702
+ position: fixed;
703
+ top: 0;
704
+ left: 0;
705
+ width: 100%;
706
+ height: 100%;
707
+ background: rgba(0, 0, 0, 0.5);
708
+ display: flex;
709
+ align-items: center;
710
+ justify-content: center;
711
+ z-index: 10001;
712
+ animation: modalOverlayFadeIn 0.2s ease-out;
713
+ font-family: Arial, sans-serif;
714
+ }
715
+
716
+ @keyframes modalOverlayFadeIn {
717
+ from { opacity: 0; }
718
+ to { opacity: 1; }
719
+ }
720
+
721
+ .dss-marker-modal {
722
+ background: white;
723
+ border-radius: 8px;
724
+ width: 90%;
725
+ max-width: 450px;
726
+ animation: modalSlideIn 0.2s ease-out;
727
+ }
728
+
729
+ @keyframes modalSlideIn {
730
+ from {
731
+ opacity: 0;
732
+ transform: scale(0.9) translateY(-20px);
733
+ }
734
+ to {
735
+ opacity: 1;
736
+ transform: scale(1) translateY(0);
737
+ }
738
+ }
739
+
740
+ .dss-marker-modal-header {
741
+ display: flex;
742
+ justify-content: space-between;
743
+ align-items: center;
744
+ padding: 20px 24px 16px;
745
+ border-bottom: 1px solid #e5e5e5;
746
+ }
747
+
748
+ .dss-marker-modal-header h3 {
749
+ margin: 0;
750
+ font-size: 18px;
751
+ font-weight: 600;
752
+ color: #333;
753
+ }
754
+
755
+ .dss-modal-close-dss-btn {
756
+ background: none;
757
+ border: none;
758
+ font-size: 24px;
759
+ cursor: pointer;
760
+ color: #666;
761
+ padding: 0;
762
+ width: 24px;
763
+ height: 24px;
764
+ display: flex;
765
+ align-items: center;
766
+ justify-content: center;
767
+ border-radius: 4px;
768
+ }
769
+
770
+ .dss-marker-modal-body {
771
+ padding: 20px 24px;
772
+ }
773
+
774
+ .dss-form-group {
775
+ margin-bottom: 16px;
776
+ }
777
+
778
+ .dss-form-group:last-child {
779
+ margin-bottom: 0;
780
+ }
781
+
782
+ .dss-form-group label {
783
+ display: block;
784
+ margin-bottom: 6px;
785
+ font-weight: 500;
786
+ color: #333;
787
+ font-size: 14px;
788
+ }
789
+
790
+ .dss-form-input,
791
+ .dss-form-textarea {
792
+ width: 100%;
793
+ padding: 10px 12px;
794
+ border: 1px solid #ddd;
795
+ border-radius: 4px;
796
+ font-size: 14px;
797
+ transition: border-color 0.15s ease;
798
+ box-sizing: border-box;
799
+ }
800
+
801
+ .dss-form-input:focus,
802
+ .dss-form-textarea:focus {
803
+ outline: none;
804
+ border-color: hsl(194, 95%, 30%);
805
+ }
806
+
807
+ .dss-form-textarea {
808
+ resize: vertical;
809
+ min-height: 60px;
810
+ font-family: inherit;
811
+ }
812
+
813
+ .dss-form-color {
814
+ width: 40px;
815
+ height: 40px;
816
+ border: 1px solid #ddd;
817
+ border-radius: 4px;
818
+ cursor: pointer;
819
+ padding: 0;
820
+ }
821
+
822
+ .dss-marker-modal-footer {
823
+ display: flex;
824
+ gap: 12px;
825
+ justify-content: space-between;
826
+ padding: 16px 24px 20px;
827
+ }
828
+
829
+ .dss-modal-footer-right{
830
+ display: flex;
831
+ gap: .6rem;
832
+ }
833
+
834
+ .dss-btn {
835
+ padding: 10px 20px;
836
+ border: none;
837
+ border-radius: 4px;
838
+ font-size: 14px;
839
+ font-weight: 500;
840
+ cursor: pointer;
841
+ transition: all 0.15s ease;
842
+ min-width: 80px;
843
+ }
844
+
845
+ .dss-btn-secondary {
846
+ background: #f5f5f5;
847
+ color: #333;
848
+ }
849
+
850
+ .dss-btn-secondary:hover {
851
+ background: #e5e5e5;
852
+ }
853
+
854
+ .dss-btn-primary {
855
+ background: hsl(42, 100%, 59%);
856
+ color: black;
857
+ }
858
+
859
+ .dss-btn-primary:hover:not(:disabled) {
860
+ background: hsl(42, 100%, 44%);
861
+ }
862
+
863
+ .dss-btn-primary:disabled {
864
+ background: hsl(42, 100%, 59%, 0.5);
865
+ cursor: not-allowed;
866
+ }
867
+
868
+ /* Markers */
869
+
870
+ .dss-markers {
871
+ position: absolute;
872
+ top: 0;
873
+ left: 0;
874
+ width: 100%;
875
+ height: 100%;
876
+ pointer-events: none;
877
+ z-index: 1000;
878
+ }
879
+
880
+ .dss-marker {
881
+ transition: all 0.2s ease;
882
+ }
883
+
884
+ .dss-marker:hover {
885
+ transform: translate(-50%, -50%) scale(1.2) !important;
886
+ z-index: 1001;
887
+ }
888
+
889
+ .dss-marker-icon{
890
+ width: 24px;
891
+ height: 24px;
892
+ border-radius: 50%;
893
+ display: flex;
894
+ align-items: center;
895
+ justify-content: center;
896
+ }
897
+
898
+ .dss-btn-danger {
899
+ background-color: hsl(345, 94%, 44%);
900
+ color: white;
901
+ border: 1px solid hsl(345, 94%, 44%);
902
+ padding: 8px 16px;
903
+ border-radius: 4px;
904
+ cursor: pointer;
905
+ font-size: 14px;
906
+ }
907
+
908
+ .dss-btn-danger:hover {
909
+ filter: brightness(0.9);
910
+ }
911
+
912
+ .dss-custom-chart-container {
913
+ position: relative;
914
+ overflow: hidden;
915
+ }
916
+
917
+ .dss-chart-watermark {
918
+ mix-blend-mode: multiply;
919
+ filter: grayscale(50%);
920
+ background-color: transparent;
921
+ }
922
+
923
+ .dss-flag-count-indicator {
924
+ cursor: pointer;
925
+ transform-origin: center center;
926
+ }
927
+
928
+ .dss-flag-extension-line {
929
+ pointer-events: none;
930
+ }
931
+
932
+ .dss-flag-line {
933
+ cursor: pointer;
934
+ transition: all 0.2s ease;
935
+ }
936
+
937
+ .dss-flag-count-text {
938
+ pointer-events: none;
939
+ user-select: none;
940
+ }
941
+
942
+ .dss-flag-type-indicator {
943
+ pointer-events: none;
944
+ }
945
+
946
+ .dss-tooltip-section {
947
+ margin-bottom: 8px;
948
+ }
949
+
950
+ .dss-tooltip-section:last-child {
951
+ margin-bottom: 0;
952
+ }
953
+
954
+ .dss-tooltip-separator {
955
+ height: 1px;
956
+ background-color: rgba(255, 255, 255, 0.2);
957
+ margin: 8px 0;
958
+ }
959
+
960
+ .dss-tooltip-section-title {
961
+ font-size: 11px;
962
+ font-weight: 600;
963
+ color: rgba(255, 255, 255, 0.8);
964
+ text-transform: uppercase;
965
+ letter-spacing: 0.5px;
966
+ margin-bottom: 4px;
967
+ }
968
+
969
+ .dss-tooltip-item {
970
+ display: flex;
971
+ align-items: flex-start;
972
+ gap: 6px;
973
+ margin-bottom: 4px;
974
+ padding: 2px 0;
975
+ }
976
+
977
+ .dss-tooltip-item:last-child {
978
+ margin-bottom: 0;
979
+ }
980
+
981
+ .dss-tooltip-item-indicator {
982
+ width: 8px;
983
+ height: 8px;
984
+ border-radius: 50%;
985
+ flex-shrink: 0;
986
+ }
987
+
988
+ .dss-tooltip-item-content {
989
+ flex: 1;
990
+ min-width: 0;
991
+ }
992
+
993
+ .dss-tooltip-item-type {
994
+ font-size: 10px;
995
+ color: rgba(255, 255, 255, 0.7);
996
+ text-transform: uppercase;
997
+ letter-spacing: 0.3px;
998
+ }
999
+
1000
+ .dss-tooltip-item-title {
1001
+ font-size: 12px;
1002
+ font-weight: 500;
1003
+ color: white;
1004
+ line-height: 1.3;
1005
+ }
1006
+
1007
+ .dss-tooltip-item-text,
1008
+ .dss-tooltip-item-description {
1009
+ font-size: 11px;
1010
+ color: rgba(255, 255, 255, 0.9);
1011
+ line-height: 1.3;
1012
+ word-wrap: break-word;
1013
+ }
1014
+
1015
+ .dss-chart-tooltip {
1016
+ max-width: 250px;
1017
+ min-width: 150px;
1018
+ }
1019
+
1020
+ .dss-tooltip-group-header {
1021
+ font-weight: 600;
1022
+ font-size: 10px;
1023
+ margin: 10px 0 4px 0;
1024
+ text-transform: uppercase;
1025
+ letter-spacing: 0.5px;
1026
+ display: flex;
1027
+ align-items: center;
1028
+ gap: 6px;
1029
+ }
1030
+
1031
+ .dss-tooltip-group-header:first-child {
1032
+ margin-top: 6px;
1033
+ }
1034
+
1035
+ .dss-tooltip-item-no-indicator {
1036
+ padding-left: 16px;
1037
+ }
1038
+
1039
+ .dss-radial-labels .dss-label-highlighted text {
1040
+ font-weight: bold;
1041
+ fill-opacity: 1;
1042
+ }
1043
+
1044
+ .dss-radial-labels .dss-label-dimmed text {
1045
+ fill-opacity: 0.5;
1046
+ }
1047
+
1048
+ .dss-radial-labels .dss-label-dimmed line {
1049
+ stroke-opacity: 0.3;
1050
+ }
1051
+
1052
+ .dss-radial-labels text {
1053
+ transition: all 0.3s ease;
1054
+ }
1055
+
1056
+ .dss-radial-labels line {
1057
+ transition: all 0.3s ease;
1058
+ }