dsp-semactic 0.4.0 → 0.5.1

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