@sentropic/design-system-react 0.1.0 → 0.2.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.
package/dist/styles.css CHANGED
@@ -2344,10 +2344,13 @@
2344
2344
 
2345
2345
  .st-forceGraph svg { display: block; overflow: visible; }
2346
2346
 
2347
+ .st-forceGraph__svg--panning { cursor: grabbing; }
2348
+
2347
2349
  .st-forceGraph__edge {
2348
2350
  stroke: var(--st-semantic-border-strong);
2349
2351
  stroke-width: 1;
2350
2352
  opacity: 0.55;
2353
+ transition: opacity 120ms ease, stroke-width 120ms ease;
2351
2354
  }
2352
2355
 
2353
2356
  .st-forceGraph__edge--weak {
@@ -2356,6 +2359,19 @@
2356
2359
  opacity: 0.5;
2357
2360
  }
2358
2361
 
2362
+ .st-forceGraph__edge--hovered {
2363
+ opacity: 0.9;
2364
+ stroke-width: 2;
2365
+ }
2366
+
2367
+ /* Invisible wide hit target for edge hover */
2368
+ .st-forceGraph__edgeHit {
2369
+ stroke: transparent;
2370
+ stroke-width: 10;
2371
+ fill: none;
2372
+ cursor: crosshair;
2373
+ }
2374
+
2359
2375
  .st-forceGraph__node { transition: opacity 120ms ease; }
2360
2376
  .st-forceGraph__node--dim { opacity: 0.3; }
2361
2377
 
@@ -2375,14 +2391,14 @@
2375
2391
  outline-offset: 1px;
2376
2392
  }
2377
2393
 
2378
-
2394
+ /* Selection highlight: slightly thicker stroke ring, full opacity. */
2379
2395
  .st-forceGraph__node--selected .st-forceGraph__dot {
2380
2396
  fill-opacity: 1;
2381
2397
  stroke: var(--st-semantic-border-interactive, #0f62fe);
2382
2398
  stroke-width: 2.5;
2383
2399
  }
2384
2400
 
2385
-
2401
+ /* Focus (keyboard/programmatic focus): stronger ring + slight scale. */
2386
2402
  .st-forceGraph__node--focus .st-forceGraph__dot {
2387
2403
  fill-opacity: 1;
2388
2404
  stroke: var(--st-semantic-border-interactive, #0f62fe);
@@ -2424,10 +2440,169 @@
2424
2440
 
2425
2441
  .st-forceGraph__tooltipLabel { font-weight: 600; }
2426
2442
  .st-forceGraph__tooltipMeta { opacity: 0.85; }
2443
+ .st-forceGraph__tooltipRelation {
2444
+ opacity: 0.75;
2445
+ font-style: italic;
2446
+ font-size: 0.6875rem;
2447
+ }
2448
+
2449
+ /* Reset view button */
2450
+ .st-forceGraph__resetBtn {
2451
+ background: var(--st-semantic-surface-overlay, rgba(0,0,0,0.55));
2452
+ border: none;
2453
+ border-radius: var(--st-radius-sm, 0.25rem);
2454
+ color: var(--st-semantic-text-inverse, #fff);
2455
+ cursor: pointer;
2456
+ font-size: 1rem;
2457
+ line-height: 1;
2458
+ padding: 0.25rem 0.5rem;
2459
+ position: absolute;
2460
+ bottom: 0.5rem;
2461
+ right: 0.5rem;
2462
+ opacity: 0.8;
2463
+ transition: opacity 120ms ease;
2464
+ z-index: 2;
2465
+ }
2466
+
2467
+ .st-forceGraph__resetBtn:hover,
2468
+ .st-forceGraph__resetBtn:focus-visible {
2469
+ opacity: 1;
2470
+ }
2471
+
2472
+ .st-forceGraph__resetBtn:focus-visible {
2473
+ outline: 2px solid var(--st-semantic-border-interactive);
2474
+ outline-offset: 2px;
2475
+ }
2476
+
2477
+ /* Legend overlay */
2478
+ .st-forceGraph__legend {
2479
+ background: var(--st-semantic-surface-overlay, rgba(0,0,0,0.45));
2480
+ border-radius: var(--st-radius-sm, 0.25rem);
2481
+ color: var(--st-semantic-text-inverse, #fff);
2482
+ display: flex;
2483
+ flex-direction: column;
2484
+ font-size: 0.6875rem;
2485
+ gap: 0.25rem;
2486
+ padding: 0.375rem 0.5rem;
2487
+ pointer-events: none;
2488
+ position: absolute;
2489
+ bottom: 0.5rem;
2490
+ left: 0.5rem;
2491
+ z-index: 2;
2492
+ }
2493
+
2494
+ .st-forceGraph__legendEntry {
2495
+ align-items: center;
2496
+ display: flex;
2497
+ gap: 0.375rem;
2498
+ }
2499
+
2500
+ .st-forceGraph__legendSwatch {
2501
+ flex-shrink: 0;
2502
+ }
2503
+
2504
+ .st-forceGraph__legendLabel {
2505
+ white-space: nowrap;
2506
+ }
2507
+
2508
+ .st-forceGraph__legendShape {
2509
+ fill-opacity: 0.9;
2510
+ stroke: var(--st-semantic-surface-default, #fff);
2511
+ stroke-width: 1;
2512
+ }
2513
+
2514
+ .st-forceGraph__legendShape--category1 { fill: var(--st-semantic-data-category1); }
2515
+ .st-forceGraph__legendShape--category2 { fill: var(--st-semantic-data-category2); }
2516
+ .st-forceGraph__legendShape--category3 { fill: var(--st-semantic-data-category3); }
2517
+ .st-forceGraph__legendShape--category4 { fill: var(--st-semantic-data-category4); }
2518
+ .st-forceGraph__legendShape--category5 { fill: var(--st-semantic-data-category5); }
2519
+ .st-forceGraph__legendShape--category6 { fill: var(--st-semantic-data-category6); }
2520
+ .st-forceGraph__legendShape--category7 { fill: var(--st-semantic-data-category7); }
2521
+ .st-forceGraph__legendShape--category8 { fill: var(--st-semantic-data-category8); }
2522
+
2523
+ .st-forceGraph__legendEdge {
2524
+ stroke: var(--st-semantic-border-strong, #888);
2525
+ stroke-width: 1.5;
2526
+ opacity: 0.8;
2527
+ }
2528
+
2529
+ .st-forceGraph__legendEdge--weak {
2530
+ stroke: var(--st-semantic-border-subtle, #aaa);
2531
+ stroke-dasharray: 3 3;
2532
+ opacity: 0.65;
2533
+ }
2427
2534
 
2428
2535
  @media (prefers-reduced-motion: reduce) {
2429
2536
  .st-forceGraph__node,
2430
- .st-forceGraph__dot { transition: none; }
2537
+ .st-forceGraph__dot,
2538
+ .st-forceGraph__edge,
2539
+ .st-forceGraph__resetBtn { transition: none; }
2540
+ }
2541
+
2542
+ .st-graphLegend {
2543
+ background: var(--st-semantic-surface-overlay, rgba(0,0,0,0.45));
2544
+ border-radius: var(--st-radius-sm, 0.25rem);
2545
+ color: var(--st-semantic-text-inverse, #fff);
2546
+ display: inline-flex;
2547
+ flex-direction: column;
2548
+ font-size: 0.6875rem;
2549
+ gap: 0.25rem;
2550
+ padding: 0.375rem 0.5rem;
2551
+ }
2552
+
2553
+ .st-graphLegend__title {
2554
+ font-size: 0.625rem;
2555
+ font-weight: 600;
2556
+ letter-spacing: 0.04em;
2557
+ margin: 0 0 0.125rem;
2558
+ opacity: 0.75;
2559
+ text-transform: uppercase;
2560
+ }
2561
+
2562
+ .st-graphLegend__list {
2563
+ display: flex;
2564
+ flex-direction: column;
2565
+ gap: 0.25rem;
2566
+ list-style: none;
2567
+ margin: 0;
2568
+ padding: 0;
2569
+ }
2570
+
2571
+ .st-graphLegend__entry {
2572
+ align-items: center;
2573
+ display: flex;
2574
+ gap: 0.375rem;
2575
+ }
2576
+
2577
+ .st-graphLegend__swatch { flex-shrink: 0; }
2578
+
2579
+ .st-graphLegend__label { white-space: nowrap; }
2580
+
2581
+ .st-graphLegend__shape {
2582
+ fill-opacity: 0.9;
2583
+ stroke: var(--st-semantic-surface-default, #fff);
2584
+ stroke-width: 1;
2585
+ }
2586
+
2587
+ .st-graphLegend__shape--category1 { fill: var(--st-semantic-data-category1); }
2588
+ .st-graphLegend__shape--category2 { fill: var(--st-semantic-data-category2); }
2589
+ .st-graphLegend__shape--category3 { fill: var(--st-semantic-data-category3); }
2590
+ .st-graphLegend__shape--category4 { fill: var(--st-semantic-data-category4); }
2591
+ .st-graphLegend__shape--category5 { fill: var(--st-semantic-data-category5); }
2592
+ .st-graphLegend__shape--category6 { fill: var(--st-semantic-data-category6); }
2593
+ .st-graphLegend__shape--category7 { fill: var(--st-semantic-data-category7); }
2594
+ .st-graphLegend__shape--category8 { fill: var(--st-semantic-data-category8); }
2595
+
2596
+ .st-graphLegend__edge {
2597
+ stroke: var(--st-semantic-border-strong, #888);
2598
+ stroke-width: 1.5;
2599
+ opacity: 0.8;
2600
+ }
2601
+
2602
+ .st-graphLegend__edge--weak {
2603
+ stroke: var(--st-semantic-border-subtle, #aaa);
2604
+ stroke-dasharray: 3 3;
2605
+ opacity: 0.65;
2431
2606
  }
2432
2607
 
2433
2608
  .st-form {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sentropic/design-system-react",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "React components for the Sentropic design system.",
5
5
  "type": "module",
6
6
  "publishConfig": {