@sentropic/design-system-react 0.11.0 → 0.13.0

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.
Files changed (52) hide show
  1. package/dist/ComboChart.d.ts +27 -0
  2. package/dist/ComboChart.d.ts.map +1 -0
  3. package/dist/ComboChart.js +189 -0
  4. package/dist/ComboChart.js.map +1 -0
  5. package/dist/FunnelChart.d.ts +20 -0
  6. package/dist/FunnelChart.d.ts.map +1 -0
  7. package/dist/FunnelChart.js +117 -0
  8. package/dist/FunnelChart.js.map +1 -0
  9. package/dist/GaugeChart.d.ts +35 -0
  10. package/dist/GaugeChart.d.ts.map +1 -0
  11. package/dist/GaugeChart.js +115 -0
  12. package/dist/GaugeChart.js.map +1 -0
  13. package/dist/KpiCard.d.ts +45 -0
  14. package/dist/KpiCard.d.ts.map +1 -0
  15. package/dist/KpiCard.js +67 -0
  16. package/dist/KpiCard.js.map +1 -0
  17. package/dist/Popper.d.ts +18 -1
  18. package/dist/Popper.d.ts.map +1 -1
  19. package/dist/Popper.js +126 -3
  20. package/dist/Popper.js.map +1 -1
  21. package/dist/SelectableList.d.ts.map +1 -1
  22. package/dist/SelectableList.js +47 -15
  23. package/dist/SelectableList.js.map +1 -1
  24. package/dist/SelectableRow.d.ts +8 -6
  25. package/dist/SelectableRow.d.ts.map +1 -1
  26. package/dist/SelectableRow.js +16 -5
  27. package/dist/SelectableRow.js.map +1 -1
  28. package/dist/TreemapChart.d.ts +25 -0
  29. package/dist/TreemapChart.d.ts.map +1 -0
  30. package/dist/TreemapChart.js +179 -0
  31. package/dist/TreemapChart.js.map +1 -0
  32. package/dist/WaterfallChart.d.ts +18 -0
  33. package/dist/WaterfallChart.d.ts.map +1 -0
  34. package/dist/WaterfallChart.js +133 -0
  35. package/dist/WaterfallChart.js.map +1 -0
  36. package/dist/catalog.d.ts.map +1 -1
  37. package/dist/catalog.js +351 -44
  38. package/dist/catalog.js.map +1 -1
  39. package/dist/chartContrast.d.ts +6 -0
  40. package/dist/chartContrast.d.ts.map +1 -0
  41. package/dist/chartContrast.js +59 -0
  42. package/dist/chartContrast.js.map +1 -0
  43. package/dist/chartScale.d.ts +6 -0
  44. package/dist/chartScale.d.ts.map +1 -1
  45. package/dist/chartScale.js +41 -0
  46. package/dist/chartScale.js.map +1 -1
  47. package/dist/index.d.ts +12 -0
  48. package/dist/index.d.ts.map +1 -1
  49. package/dist/index.js +6 -0
  50. package/dist/index.js.map +1 -1
  51. package/dist/styles.css +739 -2
  52. package/package.json +1 -1
package/dist/styles.css CHANGED
@@ -809,7 +809,7 @@
809
809
  .st-chatMessage--failed .st-chatMessage__bubble {
810
810
  border-color: var(
811
811
  --st-component-chatMessage-errorBorder,
812
- var(--st-semantic-feedback-danger, #b91c1c)
812
+ var(--st-semantic-feedback-error, #b91c1c)
813
813
  );
814
814
  }
815
815
 
@@ -2955,7 +2955,7 @@
2955
2955
  }
2956
2956
 
2957
2957
  .st-iconButton--danger {
2958
- color: var(--st-semantic-feedback-danger, #b91c1c);
2958
+ color: var(--st-semantic-feedback-error, #b91c1c);
2959
2959
  }
2960
2960
 
2961
2961
  .st-iconButton:hover:not(:disabled) {
@@ -8295,3 +8295,740 @@
8295
8295
  gap: var(--st-spacing-1, 0.25rem);
8296
8296
  width: 100%;
8297
8297
  }
8298
+
8299
+ /* ---------------------------------------------------------------------------
8300
+ KpiCard — indicateur chiffré avec delta, tendance et sparkline optionnels.
8301
+ --------------------------------------------------------------------------- */
8302
+ .st-kpiCard {
8303
+ background: var(--st-component-card-background, var(--st-semantic-surface-raised));
8304
+ border-width: var(--st-component-card-anatomy-shape-borderWidth, 1px);
8305
+ border-style: var(--st-component-card-anatomy-shape-borderStyle, solid);
8306
+ border-color: var(--st-component-card-border, var(--st-semantic-border-subtle));
8307
+ border-radius: var(--st-component-card-anatomy-shape-radius, 0.5rem);
8308
+ box-shadow: var(--st-component-card-shadow, 0 1px 2px rgb(15 23 42 / 0.08));
8309
+ color: var(--st-semantic-text-primary);
8310
+ display: flex;
8311
+ flex-direction: column;
8312
+ gap: var(--st-spacing-2, 0.5rem);
8313
+ padding: var(--st-spacing-4, 1rem);
8314
+ }
8315
+
8316
+ .st-kpiCard--sm {
8317
+ gap: var(--st-spacing-1, 0.25rem);
8318
+ padding: var(--st-spacing-3, 0.75rem);
8319
+ }
8320
+
8321
+ .st-kpiCard--lg {
8322
+ gap: var(--st-spacing-3, 0.75rem);
8323
+ padding: var(--st-spacing-6, 1.5rem);
8324
+ }
8325
+
8326
+ .st-kpiCard__label {
8327
+ align-items: center;
8328
+ color: var(--st-semantic-text-secondary);
8329
+ display: flex;
8330
+ font-size: 0.8125rem;
8331
+ font-weight: 500;
8332
+ gap: var(--st-spacing-1, 0.25rem);
8333
+ line-height: 1.25;
8334
+ margin: 0;
8335
+ }
8336
+
8337
+ .st-kpiCard--lg .st-kpiCard__label {
8338
+ font-size: 0.875rem;
8339
+ }
8340
+
8341
+ .st-kpiCard__value {
8342
+ align-items: baseline;
8343
+ color: var(--st-semantic-text-primary);
8344
+ display: flex;
8345
+ flex-wrap: wrap;
8346
+ gap: var(--st-spacing-1, 0.25rem);
8347
+ margin: 0;
8348
+ }
8349
+
8350
+ .st-kpiCard__number {
8351
+ font-size: 1.5rem;
8352
+ font-weight: 700;
8353
+ letter-spacing: 0;
8354
+ line-height: 1.1;
8355
+ }
8356
+
8357
+ .st-kpiCard--sm .st-kpiCard__number {
8358
+ font-size: 1.25rem;
8359
+ }
8360
+
8361
+ .st-kpiCard--lg .st-kpiCard__number {
8362
+ font-size: 2.25rem;
8363
+ }
8364
+
8365
+ .st-kpiCard__unit {
8366
+ color: var(--st-semantic-text-secondary);
8367
+ font-size: 0.875rem;
8368
+ font-weight: 500;
8369
+ }
8370
+
8371
+ .st-kpiCard__footer {
8372
+ align-items: center;
8373
+ display: flex;
8374
+ flex-wrap: wrap;
8375
+ gap: var(--st-spacing-3, 0.75rem);
8376
+ justify-content: space-between;
8377
+ }
8378
+
8379
+ .st-kpiCard__delta {
8380
+ align-items: center;
8381
+ display: inline-flex;
8382
+ font-size: 0.8125rem;
8383
+ font-weight: 600;
8384
+ gap: var(--st-spacing-1, 0.25rem);
8385
+ line-height: 1;
8386
+ }
8387
+
8388
+ .st-kpiCard__arrow {
8389
+ display: block;
8390
+ flex: 0 0 auto;
8391
+ }
8392
+
8393
+ .st-kpiCard__delta--up {
8394
+ color: var(--st-semantic-feedback-success);
8395
+ }
8396
+
8397
+ .st-kpiCard__delta--down {
8398
+ color: var(--st-semantic-feedback-error);
8399
+ }
8400
+
8401
+ .st-kpiCard__delta--flat {
8402
+ color: var(--st-semantic-text-secondary);
8403
+ }
8404
+
8405
+ /* Accent catégoriel discret : pastille inline près de l'étiquette
8406
+ (remplace l'ancien liseré gauche, anti-pattern sur conteneur arrondi). */
8407
+ .st-kpiCard__swatch {
8408
+ background: var(--st-semantic-border-subtle);
8409
+ border-radius: 50%;
8410
+ display: inline-block;
8411
+ flex: 0 0 auto;
8412
+ height: 0.5rem;
8413
+ width: 0.5rem;
8414
+ }
8415
+
8416
+ .st-kpiCard--category1 .st-kpiCard__swatch {
8417
+ background: var(--st-semantic-data-category1);
8418
+ }
8419
+ .st-kpiCard--category2 .st-kpiCard__swatch {
8420
+ background: var(--st-semantic-data-category2);
8421
+ }
8422
+ .st-kpiCard--category3 .st-kpiCard__swatch {
8423
+ background: var(--st-semantic-data-category3);
8424
+ }
8425
+ .st-kpiCard--category4 .st-kpiCard__swatch {
8426
+ background: var(--st-semantic-data-category4);
8427
+ }
8428
+ .st-kpiCard--category5 .st-kpiCard__swatch {
8429
+ background: var(--st-semantic-data-category5);
8430
+ }
8431
+ .st-kpiCard--category6 .st-kpiCard__swatch {
8432
+ background: var(--st-semantic-data-category6);
8433
+ }
8434
+ .st-kpiCard--category7 .st-kpiCard__swatch {
8435
+ background: var(--st-semantic-data-category7);
8436
+ }
8437
+ .st-kpiCard--category8 .st-kpiCard__swatch {
8438
+ background: var(--st-semantic-data-category8);
8439
+ }
8440
+
8441
+ /* ---------------------------------------------------------------------------
8442
+ ComboChart — barres groupées (axe gauche) + lignes (axe droit).
8443
+ --------------------------------------------------------------------------- */
8444
+ .st-comboChart {
8445
+ color: var(--st-semantic-text-secondary);
8446
+ display: block;
8447
+ font-family: inherit;
8448
+ position: relative;
8449
+ width: 100%;
8450
+ }
8451
+
8452
+ .st-comboChart svg {
8453
+ display: block;
8454
+ overflow: visible;
8455
+ }
8456
+
8457
+ .st-comboChart__visual {
8458
+ display: block;
8459
+ }
8460
+
8461
+ .st-comboChart__grid {
8462
+ stroke: var(--st-component-comboChart-gridStroke, var(--st-semantic-border-subtle));
8463
+ stroke-dasharray: 2 3;
8464
+ stroke-width: 1;
8465
+ opacity: 0.7;
8466
+ }
8467
+
8468
+ .st-comboChart__axis {
8469
+ stroke: var(--st-component-comboChart-axisStroke, var(--st-semantic-border-subtle));
8470
+ stroke-width: 1;
8471
+ }
8472
+
8473
+ .st-comboChart__tickLabel,
8474
+ .st-comboChart__categoryLabel {
8475
+ fill: var(--st-component-comboChart-labelColor, var(--st-semantic-text-secondary));
8476
+ font-size: 0.6875rem;
8477
+ }
8478
+
8479
+ .st-comboChart__axisLabel {
8480
+ fill: var(--st-component-comboChart-labelColor, var(--st-semantic-text-secondary));
8481
+ font-size: 0.6875rem;
8482
+ font-weight: 600;
8483
+ }
8484
+
8485
+ .st-comboChart__bar {
8486
+ cursor: pointer;
8487
+ transition: opacity 120ms ease;
8488
+ }
8489
+
8490
+ .st-comboChart__bar:hover {
8491
+ opacity: 0.82;
8492
+ }
8493
+
8494
+ .st-comboChart__bar--category1 { fill: var(--st-semantic-data-category1); }
8495
+ .st-comboChart__bar--category2 { fill: var(--st-semantic-data-category2); }
8496
+ .st-comboChart__bar--category3 { fill: var(--st-semantic-data-category3); }
8497
+ .st-comboChart__bar--category4 { fill: var(--st-semantic-data-category4); }
8498
+ .st-comboChart__bar--category5 { fill: var(--st-semantic-data-category5); }
8499
+ .st-comboChart__bar--category6 { fill: var(--st-semantic-data-category6); }
8500
+ .st-comboChart__bar--category7 { fill: var(--st-semantic-data-category7); }
8501
+ .st-comboChart__bar--category8 { fill: var(--st-semantic-data-category8); }
8502
+
8503
+ .st-comboChart__line--category1 { stroke: var(--st-semantic-data-category1); }
8504
+ .st-comboChart__line--category2 { stroke: var(--st-semantic-data-category2); }
8505
+ .st-comboChart__line--category3 { stroke: var(--st-semantic-data-category3); }
8506
+ .st-comboChart__line--category4 { stroke: var(--st-semantic-data-category4); }
8507
+ .st-comboChart__line--category5 { stroke: var(--st-semantic-data-category5); }
8508
+ .st-comboChart__line--category6 { stroke: var(--st-semantic-data-category6); }
8509
+ .st-comboChart__line--category7 { stroke: var(--st-semantic-data-category7); }
8510
+ .st-comboChart__line--category8 { stroke: var(--st-semantic-data-category8); }
8511
+
8512
+ .st-comboChart__dot {
8513
+ stroke: var(--st-semantic-surface-default);
8514
+ stroke-width: 1.5;
8515
+ cursor: pointer;
8516
+ transition: r 120ms ease;
8517
+ }
8518
+
8519
+ .st-comboChart__dot:hover {
8520
+ r: 5.5;
8521
+ }
8522
+
8523
+ .st-comboChart__dot--category1 { fill: var(--st-semantic-data-category1); }
8524
+ .st-comboChart__dot--category2 { fill: var(--st-semantic-data-category2); }
8525
+ .st-comboChart__dot--category3 { fill: var(--st-semantic-data-category3); }
8526
+ .st-comboChart__dot--category4 { fill: var(--st-semantic-data-category4); }
8527
+ .st-comboChart__dot--category5 { fill: var(--st-semantic-data-category5); }
8528
+ .st-comboChart__dot--category6 { fill: var(--st-semantic-data-category6); }
8529
+ .st-comboChart__dot--category7 { fill: var(--st-semantic-data-category7); }
8530
+ .st-comboChart__dot--category8 { fill: var(--st-semantic-data-category8); }
8531
+
8532
+ @media (prefers-reduced-motion: reduce) {
8533
+ .st-comboChart__bar,
8534
+ .st-comboChart__dot {
8535
+ transition: none;
8536
+ }
8537
+ }
8538
+
8539
+ .st-comboChart__legend {
8540
+ display: flex;
8541
+ flex-wrap: wrap;
8542
+ gap: var(--st-spacing-3, 0.75rem);
8543
+ list-style: none;
8544
+ margin: var(--st-spacing-2, 0.5rem) 0 0;
8545
+ padding: 0;
8546
+ }
8547
+
8548
+ .st-comboChart__legendItem {
8549
+ align-items: center;
8550
+ color: var(--st-semantic-text-secondary);
8551
+ display: inline-flex;
8552
+ font-size: 0.75rem;
8553
+ gap: var(--st-spacing-1, 0.25rem);
8554
+ }
8555
+
8556
+ .st-comboChart__legendSwatch {
8557
+ display: inline-block;
8558
+ flex: none;
8559
+ }
8560
+
8561
+ .st-comboChart__legendSwatch--bar {
8562
+ border-radius: 2px;
8563
+ height: 0.75rem;
8564
+ width: 0.75rem;
8565
+ }
8566
+
8567
+ .st-comboChart__legendSwatch--line {
8568
+ border-radius: 999px;
8569
+ height: 0.25rem;
8570
+ width: 1rem;
8571
+ }
8572
+
8573
+ .st-comboChart__legendSwatch--category1 { background: var(--st-semantic-data-category1); }
8574
+ .st-comboChart__legendSwatch--category2 { background: var(--st-semantic-data-category2); }
8575
+ .st-comboChart__legendSwatch--category3 { background: var(--st-semantic-data-category3); }
8576
+ .st-comboChart__legendSwatch--category4 { background: var(--st-semantic-data-category4); }
8577
+ .st-comboChart__legendSwatch--category5 { background: var(--st-semantic-data-category5); }
8578
+ .st-comboChart__legendSwatch--category6 { background: var(--st-semantic-data-category6); }
8579
+ .st-comboChart__legendSwatch--category7 { background: var(--st-semantic-data-category7); }
8580
+ .st-comboChart__legendSwatch--category8 { background: var(--st-semantic-data-category8); }
8581
+
8582
+ .st-comboChart__tooltip {
8583
+ background: var(--st-component-comboChart-tooltipBackground, var(--st-semantic-surface-inverse));
8584
+ border-radius: var(--st-radius-sm, 0.25rem);
8585
+ color: var(--st-component-comboChart-tooltipText, var(--st-semantic-text-inverse));
8586
+ display: inline-flex;
8587
+ flex-direction: column;
8588
+ font-size: 0.75rem;
8589
+ gap: 0.125rem;
8590
+ line-height: 1.2;
8591
+ padding: 0.375rem 0.5rem;
8592
+ pointer-events: none;
8593
+ position: absolute;
8594
+ transform: translate(-50%, calc(-100% - 8px));
8595
+ white-space: nowrap;
8596
+ z-index: 1;
8597
+ }
8598
+
8599
+ .st-comboChart__tooltipLabel {
8600
+ font-weight: 600;
8601
+ }
8602
+
8603
+ .st-comboChart__tooltipValue {
8604
+ opacity: 0.85;
8605
+ }
8606
+
8607
+ /* ---------------------------------------------------------------------------
8608
+ GaugeChart — jauge en arc avec bandes de seuils, aiguille et valeur centrale.
8609
+ --------------------------------------------------------------------------- */
8610
+ .st-gaugeChart {
8611
+ color: var(--st-semantic-text-secondary);
8612
+ display: block;
8613
+ font-family: inherit;
8614
+ max-width: 100%;
8615
+ position: relative;
8616
+ }
8617
+
8618
+ .st-gaugeChart__visual,
8619
+ .st-gaugeChart svg {
8620
+ display: block;
8621
+ overflow: visible;
8622
+ }
8623
+
8624
+ .st-gaugeChart__track {
8625
+ stroke: var(--st-semantic-surface-subtle);
8626
+ stroke-linecap: round;
8627
+ }
8628
+
8629
+ .st-gaugeChart__band {
8630
+ stroke-linecap: butt;
8631
+ }
8632
+
8633
+ .st-gaugeChart__progress {
8634
+ stroke: var(--st-semantic-action-primary);
8635
+ stroke-linecap: round;
8636
+ transition: d var(--st-motion-fast, 200ms) var(--st-motion-easing, ease);
8637
+ }
8638
+
8639
+ .st-gaugeChart__needle {
8640
+ fill: var(--st-semantic-text-primary);
8641
+ transition: d var(--st-motion-fast, 200ms) var(--st-motion-easing, ease);
8642
+ }
8643
+
8644
+ .st-gaugeChart__hub {
8645
+ fill: var(--st-semantic-text-primary);
8646
+ }
8647
+
8648
+ .st-gaugeChart__value {
8649
+ fill: var(--st-semantic-text-primary);
8650
+ font-size: 1.5rem;
8651
+ font-variant-numeric: tabular-nums;
8652
+ font-weight: 700;
8653
+ }
8654
+
8655
+ .st-gaugeChart__label {
8656
+ fill: var(--st-semantic-text-secondary);
8657
+ font-size: 0.8125rem;
8658
+ font-weight: 500;
8659
+ }
8660
+
8661
+ /* Tons sémantiques de feedback */
8662
+ .st-gaugeChart__band--neutral { stroke: var(--st-semantic-border-strong, var(--st-semantic-surface-subtle)); }
8663
+ .st-gaugeChart__band--info { stroke: var(--st-semantic-feedback-info, var(--st-semantic-action-primary)); }
8664
+ .st-gaugeChart__band--success { stroke: var(--st-semantic-feedback-success); }
8665
+ .st-gaugeChart__band--warning { stroke: var(--st-semantic-feedback-warning); }
8666
+ .st-gaugeChart__band--error { stroke: var(--st-semantic-feedback-error); }
8667
+
8668
+ /* Tons catégoriels data */
8669
+ .st-gaugeChart__band--category1 { stroke: var(--st-semantic-data-category1); }
8670
+ .st-gaugeChart__band--category2 { stroke: var(--st-semantic-data-category2); }
8671
+ .st-gaugeChart__band--category3 { stroke: var(--st-semantic-data-category3); }
8672
+ .st-gaugeChart__band--category4 { stroke: var(--st-semantic-data-category4); }
8673
+ .st-gaugeChart__band--category5 { stroke: var(--st-semantic-data-category5); }
8674
+ .st-gaugeChart__band--category6 { stroke: var(--st-semantic-data-category6); }
8675
+ .st-gaugeChart__band--category7 { stroke: var(--st-semantic-data-category7); }
8676
+ .st-gaugeChart__band--category8 { stroke: var(--st-semantic-data-category8); }
8677
+
8678
+ @media (prefers-reduced-motion: reduce) {
8679
+ .st-gaugeChart__progress,
8680
+ .st-gaugeChart__needle {
8681
+ transition: none;
8682
+ }
8683
+ }
8684
+
8685
+ /* ---------------------------------------------------------------------------
8686
+ FunnelChart — entonnoir de trapèzes décroissants (vertical/horizontal).
8687
+ --------------------------------------------------------------------------- */
8688
+ .st-funnelChart {
8689
+ color: var(--st-semantic-text-secondary);
8690
+ display: block;
8691
+ font-family: inherit;
8692
+ position: relative;
8693
+ width: 100%;
8694
+ }
8695
+
8696
+ .st-funnelChart svg,
8697
+ .st-funnelChart__visual {
8698
+ display: block;
8699
+ overflow: visible;
8700
+ }
8701
+
8702
+ .st-funnelChart__segment {
8703
+ cursor: pointer;
8704
+ stroke: var(--st-semantic-surface-default, #fff);
8705
+ stroke-width: 1;
8706
+ transition: opacity 120ms ease;
8707
+ }
8708
+
8709
+ .st-funnelChart__segment--dim {
8710
+ opacity: 0.45;
8711
+ }
8712
+
8713
+ .st-funnelChart__segment--category1 { fill: var(--st-semantic-data-category1); }
8714
+ .st-funnelChart__segment--category2 { fill: var(--st-semantic-data-category2); }
8715
+ .st-funnelChart__segment--category3 { fill: var(--st-semantic-data-category3); }
8716
+ .st-funnelChart__segment--category4 { fill: var(--st-semantic-data-category4); }
8717
+ .st-funnelChart__segment--category5 { fill: var(--st-semantic-data-category5); }
8718
+ .st-funnelChart__segment--category6 { fill: var(--st-semantic-data-category6); }
8719
+ .st-funnelChart__segment--category7 { fill: var(--st-semantic-data-category7); }
8720
+ .st-funnelChart__segment--category8 { fill: var(--st-semantic-data-category8); }
8721
+
8722
+ .st-funnelChart__label {
8723
+ fill: var(--st-component-funnelChart-labelColor, var(--st-semantic-text-inverse, #fff));
8724
+ font-size: 0.75rem;
8725
+ font-weight: 600;
8726
+ pointer-events: none;
8727
+ }
8728
+
8729
+ .st-funnelChart__value {
8730
+ fill: var(--st-component-funnelChart-valueColor, var(--st-semantic-text-inverse, #fff));
8731
+ font-size: 0.6875rem;
8732
+ pointer-events: none;
8733
+ }
8734
+
8735
+ .st-funnelChart__tooltip {
8736
+ background: var(--st-semantic-surface-inverse);
8737
+ border-radius: var(--st-radius-sm, 0.25rem);
8738
+ color: var(--st-semantic-text-inverse);
8739
+ display: inline-flex;
8740
+ flex-direction: column;
8741
+ font-size: 0.75rem;
8742
+ gap: 0.125rem;
8743
+ line-height: 1.2;
8744
+ padding: 0.375rem 0.5rem;
8745
+ pointer-events: none;
8746
+ position: absolute;
8747
+ transform: translate(-50%, calc(-100% - 8px));
8748
+ white-space: nowrap;
8749
+ z-index: 1;
8750
+ }
8751
+
8752
+ .st-funnelChart__tooltipLabel { font-weight: 600; }
8753
+ .st-funnelChart__tooltipValue { opacity: 0.85; }
8754
+
8755
+ .st-funnelChart__legend {
8756
+ display: flex;
8757
+ flex-wrap: wrap;
8758
+ gap: 0.75rem;
8759
+ list-style: none;
8760
+ margin: 0.5rem 0 0;
8761
+ padding: 0;
8762
+ }
8763
+
8764
+ .st-funnelChart__legendItem {
8765
+ align-items: center;
8766
+ color: var(--st-semantic-text-secondary);
8767
+ display: inline-flex;
8768
+ font-size: 0.75rem;
8769
+ gap: 0.35rem;
8770
+ }
8771
+
8772
+ .st-funnelChart__legendSwatch {
8773
+ border-radius: 2px;
8774
+ height: 0.7rem;
8775
+ width: 0.7rem;
8776
+ }
8777
+
8778
+ .st-funnelChart__legendSwatch--category1 { background: var(--st-semantic-data-category1); }
8779
+ .st-funnelChart__legendSwatch--category2 { background: var(--st-semantic-data-category2); }
8780
+ .st-funnelChart__legendSwatch--category3 { background: var(--st-semantic-data-category3); }
8781
+ .st-funnelChart__legendSwatch--category4 { background: var(--st-semantic-data-category4); }
8782
+ .st-funnelChart__legendSwatch--category5 { background: var(--st-semantic-data-category5); }
8783
+ .st-funnelChart__legendSwatch--category6 { background: var(--st-semantic-data-category6); }
8784
+ .st-funnelChart__legendSwatch--category7 { background: var(--st-semantic-data-category7); }
8785
+ .st-funnelChart__legendSwatch--category8 { background: var(--st-semantic-data-category8); }
8786
+
8787
+ @media (prefers-reduced-motion: reduce) {
8788
+ .st-funnelChart__segment {
8789
+ transition: none;
8790
+ }
8791
+ }
8792
+
8793
+ /* ---------------------------------------------------------------------------
8794
+ WaterfallChart — barres flottantes cumulatives (hausse/baisse/total).
8795
+ --------------------------------------------------------------------------- */
8796
+ .st-waterfallChart {
8797
+ color: var(--st-semantic-text-secondary);
8798
+ display: block;
8799
+ font-family: inherit;
8800
+ position: relative;
8801
+ width: 100%;
8802
+ }
8803
+
8804
+ .st-waterfallChart svg {
8805
+ display: block;
8806
+ overflow: visible;
8807
+ }
8808
+
8809
+ .st-waterfallChart__visual {
8810
+ display: block;
8811
+ }
8812
+
8813
+ .st-waterfallChart__grid {
8814
+ stroke: var(--st-component-waterfallChart-gridStroke, var(--st-semantic-border-subtle));
8815
+ stroke-dasharray: 2 3;
8816
+ stroke-width: 1;
8817
+ opacity: 0.7;
8818
+ }
8819
+
8820
+ .st-waterfallChart__axis {
8821
+ stroke: var(--st-component-waterfallChart-axisStroke, var(--st-semantic-border-subtle));
8822
+ stroke-width: 1;
8823
+ }
8824
+
8825
+ .st-waterfallChart__zero {
8826
+ stroke: var(--st-component-waterfallChart-zeroStroke, var(--st-semantic-border-strong));
8827
+ stroke-width: 1;
8828
+ }
8829
+
8830
+ .st-waterfallChart__connector {
8831
+ stroke: var(--st-component-waterfallChart-connectorStroke, var(--st-semantic-border-strong));
8832
+ stroke-dasharray: 3 2;
8833
+ stroke-width: 1;
8834
+ opacity: 0.6;
8835
+ }
8836
+
8837
+ .st-waterfallChart__tickLabel,
8838
+ .st-waterfallChart__categoryLabel {
8839
+ fill: var(--st-component-waterfallChart-labelColor, var(--st-semantic-text-secondary));
8840
+ font-size: 0.6875rem;
8841
+ }
8842
+
8843
+ .st-waterfallChart__bar {
8844
+ cursor: pointer;
8845
+ transition: opacity 120ms ease;
8846
+ }
8847
+
8848
+ .st-waterfallChart__bar:hover {
8849
+ opacity: 0.82;
8850
+ }
8851
+
8852
+ .st-waterfallChart__bar--increase {
8853
+ fill: var(--st-component-waterfallChart-increaseFill, var(--st-semantic-feedback-success));
8854
+ }
8855
+ .st-waterfallChart__bar--decrease {
8856
+ fill: var(--st-component-waterfallChart-decreaseFill, var(--st-semantic-feedback-error));
8857
+ }
8858
+ .st-waterfallChart__bar--total {
8859
+ fill: var(--st-component-waterfallChart-totalFill, var(--st-semantic-data-category1));
8860
+ }
8861
+
8862
+ @media (prefers-reduced-motion: reduce) {
8863
+ .st-waterfallChart__bar {
8864
+ transition: none;
8865
+ }
8866
+ }
8867
+
8868
+ .st-waterfallChart__legend {
8869
+ display: flex;
8870
+ flex-wrap: wrap;
8871
+ gap: var(--st-spacing-3, 0.75rem);
8872
+ list-style: none;
8873
+ margin: var(--st-spacing-2, 0.5rem) 0 0;
8874
+ padding: 0;
8875
+ }
8876
+
8877
+ .st-waterfallChart__legendItem {
8878
+ align-items: center;
8879
+ color: var(--st-semantic-text-secondary);
8880
+ display: inline-flex;
8881
+ font-size: 0.75rem;
8882
+ gap: var(--st-spacing-1, 0.25rem);
8883
+ }
8884
+
8885
+ .st-waterfallChart__legendSwatch {
8886
+ border-radius: var(--st-radius-sm, 0.25rem);
8887
+ display: inline-block;
8888
+ height: 0.75rem;
8889
+ width: 0.75rem;
8890
+ }
8891
+
8892
+ .st-waterfallChart__legendSwatch--increase {
8893
+ background: var(--st-component-waterfallChart-increaseFill, var(--st-semantic-feedback-success));
8894
+ }
8895
+ .st-waterfallChart__legendSwatch--decrease {
8896
+ background: var(--st-component-waterfallChart-decreaseFill, var(--st-semantic-feedback-error));
8897
+ }
8898
+ .st-waterfallChart__legendSwatch--total {
8899
+ background: var(--st-component-waterfallChart-totalFill, var(--st-semantic-data-category1));
8900
+ }
8901
+
8902
+ .st-waterfallChart__tooltip {
8903
+ background: var(--st-component-waterfallChart-tooltipBackground, var(--st-semantic-surface-inverse));
8904
+ border-radius: var(--st-radius-sm, 0.25rem);
8905
+ color: var(--st-component-waterfallChart-tooltipText, var(--st-semantic-text-inverse));
8906
+ display: inline-flex;
8907
+ flex-direction: column;
8908
+ font-size: 0.75rem;
8909
+ gap: 0.125rem;
8910
+ line-height: 1.2;
8911
+ padding: 0.375rem 0.5rem;
8912
+ pointer-events: none;
8913
+ position: absolute;
8914
+ transform: translate(-50%, calc(-100% - 8px));
8915
+ white-space: nowrap;
8916
+ z-index: 1;
8917
+ }
8918
+
8919
+ .st-waterfallChart__tooltipLabel {
8920
+ font-weight: 600;
8921
+ }
8922
+
8923
+ .st-waterfallChart__tooltipValue {
8924
+ opacity: 0.85;
8925
+ }
8926
+
8927
+ /* ---------------------------------------------------------------------------
8928
+ TreemapChart — pavage squarified hiérarchique (1 ou 2 niveaux).
8929
+ --------------------------------------------------------------------------- */
8930
+ .st-treemapChart {
8931
+ color: var(--st-semantic-text-secondary);
8932
+ display: block;
8933
+ font-family: inherit;
8934
+ position: relative;
8935
+ width: 100%;
8936
+ }
8937
+
8938
+ .st-treemapChart svg,
8939
+ .st-treemapChart__visual {
8940
+ display: block;
8941
+ overflow: visible;
8942
+ }
8943
+
8944
+ .st-treemapChart__rect {
8945
+ cursor: pointer;
8946
+ stroke: var(--st-semantic-surface-default, #fff);
8947
+ stroke-width: 1.5;
8948
+ transition: opacity 120ms ease;
8949
+ }
8950
+
8951
+ .st-treemapChart__rect--dim {
8952
+ opacity: 0.45;
8953
+ }
8954
+
8955
+ @media (prefers-reduced-motion: reduce) {
8956
+ .st-treemapChart__rect {
8957
+ transition: none;
8958
+ }
8959
+ }
8960
+
8961
+ .st-treemapChart__rect--category1 { fill: var(--st-semantic-data-category1); }
8962
+ .st-treemapChart__rect--category2 { fill: var(--st-semantic-data-category2); }
8963
+ .st-treemapChart__rect--category3 { fill: var(--st-semantic-data-category3); }
8964
+ .st-treemapChart__rect--category4 { fill: var(--st-semantic-data-category4); }
8965
+ .st-treemapChart__rect--category5 { fill: var(--st-semantic-data-category5); }
8966
+ .st-treemapChart__rect--category6 { fill: var(--st-semantic-data-category6); }
8967
+ .st-treemapChart__rect--category7 { fill: var(--st-semantic-data-category7); }
8968
+ .st-treemapChart__rect--category8 { fill: var(--st-semantic-data-category8); }
8969
+
8970
+ .st-treemapChart__label {
8971
+ fill: var(--st-component-treemapChart-labelColor, #fff);
8972
+ font-size: 0.75rem;
8973
+ font-weight: 600;
8974
+ pointer-events: none;
8975
+ }
8976
+
8977
+ .st-treemapChart__value {
8978
+ fill: var(--st-component-treemapChart-valueColor, #fff);
8979
+ font-size: 0.6875rem;
8980
+ opacity: 0.85;
8981
+ pointer-events: none;
8982
+ }
8983
+
8984
+ .st-treemapChart__tooltip {
8985
+ background: var(--st-semantic-surface-inverse);
8986
+ border-radius: var(--st-radius-sm, 0.25rem);
8987
+ color: var(--st-semantic-text-inverse);
8988
+ display: inline-flex;
8989
+ flex-direction: column;
8990
+ font-size: 0.75rem;
8991
+ gap: 0.125rem;
8992
+ line-height: 1.2;
8993
+ padding: 0.375rem 0.5rem;
8994
+ pointer-events: none;
8995
+ position: absolute;
8996
+ transform: translate(-50%, calc(-100% - 8px));
8997
+ white-space: nowrap;
8998
+ z-index: 1;
8999
+ }
9000
+
9001
+ .st-treemapChart__tooltipLabel { font-weight: 600; }
9002
+ .st-treemapChart__tooltipValue { opacity: 0.85; }
9003
+
9004
+ .st-treemapChart__legend {
9005
+ display: flex;
9006
+ flex-wrap: wrap;
9007
+ gap: var(--st-spacing-3, 0.75rem);
9008
+ list-style: none;
9009
+ margin: var(--st-spacing-2, 0.5rem) 0 0;
9010
+ padding: 0;
9011
+ }
9012
+
9013
+ .st-treemapChart__legendItem {
9014
+ align-items: center;
9015
+ color: var(--st-semantic-text-secondary);
9016
+ display: inline-flex;
9017
+ font-size: 0.75rem;
9018
+ gap: var(--st-spacing-1, 0.35rem);
9019
+ }
9020
+
9021
+ .st-treemapChart__legendSwatch {
9022
+ border-radius: 2px;
9023
+ height: 0.7rem;
9024
+ width: 0.7rem;
9025
+ }
9026
+
9027
+ .st-treemapChart__legendSwatch--category1 { background: var(--st-semantic-data-category1); }
9028
+ .st-treemapChart__legendSwatch--category2 { background: var(--st-semantic-data-category2); }
9029
+ .st-treemapChart__legendSwatch--category3 { background: var(--st-semantic-data-category3); }
9030
+ .st-treemapChart__legendSwatch--category4 { background: var(--st-semantic-data-category4); }
9031
+ .st-treemapChart__legendSwatch--category5 { background: var(--st-semantic-data-category5); }
9032
+ .st-treemapChart__legendSwatch--category6 { background: var(--st-semantic-data-category6); }
9033
+ .st-treemapChart__legendSwatch--category7 { background: var(--st-semantic-data-category7); }
9034
+ .st-treemapChart__legendSwatch--category8 { background: var(--st-semantic-data-category8); }