@rolemodel/optics 1.9.0 → 1.11.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.
@@ -2366,8 +2366,8 @@ small {
2366
2366
  }
2367
2367
  }
2368
2368
 
2369
- .btn-warning, .btn-destructive,
2370
- .btn-delete, .btn-primary, .btn {
2369
+ .btn {
2370
+ /* Public API (customizable component options) */
2371
2371
  --_op-btn-height-small: var(--op-input-height-small);
2372
2372
  --_op-btn-height-medium: var(--op-input-height-medium);
2373
2373
  --_op-btn-height-large: var(--op-input-height-large);
@@ -2377,6 +2377,7 @@ small {
2377
2377
  --_op-btn-padding-small: 0 var(--op-space-x-small);
2378
2378
  --_op-btn-padding-medium: 0 var(--op-space-small);
2379
2379
  --_op-btn-padding-large: 0 var(--op-space-small);
2380
+ /* Private API (component option defaults) */
2380
2381
  --__op-btn-height: var(--_op-btn-height-large);
2381
2382
  --__op-btn-font-size: var(--_op-btn-font-large);
2382
2383
  --__op-btn-padding: var(--_op-btn-padding-large);
@@ -2387,6 +2388,9 @@ small {
2387
2388
  padding: var(--__op-btn-padding);
2388
2389
  border-radius: var(--op-radius-medium);
2389
2390
  appearance: none;
2391
+ background-color: var(--op-color-neutral-plus-eight);
2392
+ box-shadow: inset var(--op-border-all) var(--op-color-neutral-plus-four);
2393
+ color: var(--op-color-neutral-on-plus-eight);
2390
2394
  cursor: pointer;
2391
2395
  font-size: var(--__op-btn-font-size);
2392
2396
  font-weight: var(--op-font-weight-normal);
@@ -2395,201 +2399,209 @@ small {
2395
2399
  text-decoration: none;
2396
2400
  transition: var(--op-transition-input);
2397
2401
  white-space: nowrap;
2398
- }
2399
- .btn--pill.btn-warning, .btn--pill.btn-destructive,
2400
- .btn--pill.btn-delete, .btn--pill.btn-primary, .btn--pill.btn {
2401
- border-radius: var(--op-radius-pill);
2402
- }
2403
- .btn--icon.btn-warning, .btn--icon.btn-destructive,
2404
- .btn--icon.btn-delete, .btn--icon.btn-primary, .btn--icon.btn {
2405
- width: var(--__op-btn-height);
2406
- min-width: var(--__op-btn-height);
2407
- padding: 0;
2408
- }
2409
- .btn--icon-with-label.btn-warning, .btn--icon-with-label.btn-destructive,
2410
- .btn--icon-with-label.btn-delete, .btn--icon-with-label.btn-primary, .btn--icon-with-label.btn {
2411
- flex-direction: column;
2412
- padding: var(--op-space-small);
2413
- gap: var(--op-space-3x-small);
2414
- }
2415
- .btn--small.btn-warning, .btn--small.btn-destructive,
2416
- .btn--small.btn-delete, .btn--small.btn-primary, .btn--small.btn {
2417
- --__op-btn-height: var(--_op-btn-height-small);
2418
- --__op-btn-font-size: var(--_op-btn-font-small);
2419
- --__op-btn-padding: var(--_op-btn-padding-small);
2420
- }
2421
- .btn--medium.btn-warning, .btn--medium.btn-destructive,
2422
- .btn--medium.btn-delete, .btn--medium.btn-primary, .btn--medium.btn {
2423
- --__op-btn-height: var(--_op-btn-height-medium);
2424
- --__op-btn-font-size: var(--_op-btn-font-medium);
2425
- --__op-btn-padding: var(--_op-btn-padding-medium);
2426
- }
2427
- .btn--large.btn-warning, .btn--large.btn-destructive,
2428
- .btn--large.btn-delete, .btn--large.btn-primary, .btn--large.btn {
2429
- --__op-btn-height: var(--_op-btn-height-large);
2430
- --__op-btn-font-size: var(--_op-btn-font-large);
2431
- --__op-btn-padding: var(--_op-btn-padding-large);
2432
- }
2433
- .btn--disabled.btn-warning, .btn--disabled.btn-destructive,
2434
- .btn--disabled.btn-delete, .btn--disabled.btn-primary, .btn--disabled.btn, .btn-warning:disabled, .btn-destructive:disabled,
2435
- .btn-delete:disabled, .btn-primary:disabled, .btn:disabled {
2436
- opacity: var(--op-opacity-disabled);
2437
- pointer-events: none;
2438
- -webkit-user-select: none; /* stylelint-disable property-no-vendor-prefix */
2439
- user-select: none;
2440
- }
2441
- .btn--with-badge.btn-warning, .btn--with-badge.btn-destructive,
2442
- .btn--with-badge.btn-delete, .btn--with-badge.btn-primary, .btn--with-badge.btn {
2443
- position: relative;
2444
- }
2445
- .btn-warning:focus, .btn-destructive:focus,
2446
- .btn-delete:focus, .btn-primary:focus, .btn:focus, .btn-warning:focus-within, .btn-destructive:focus-within,
2447
- .btn-delete:focus-within, .btn-primary:focus-within, .btn:focus-within, .btn-warning:focus-visible, .btn-destructive:focus-visible,
2448
- .btn-delete:focus-visible, .btn-primary:focus-visible, .btn:focus-visible {
2449
- outline: none;
2450
- }
2451
- @media (width <= 768px) {
2452
- .btn-warning, .btn-destructive,
2453
- .btn-delete, .btn-primary, .btn {
2454
- --__op-btn-height: var(--_op-btn-height-large);
2455
- --__op-btn-font-size: var(--_op-btn-font-large);
2402
+ /* Modifiers */
2403
+ /* Default Active State */
2404
+ &.btn--active {
2405
+ background-color: var(--op-color-primary-plus-five);
2406
+ box-shadow: inset var(--op-border-all) var(--op-color-primary-plus-three);
2407
+ color: var(--op-color-primary-on-plus-five);
2408
+ }
2409
+ /* Default Hover State */
2410
+ &:hover {
2411
+ background-color: var(--op-color-primary-plus-eight);
2412
+ box-shadow: inset var(--op-border-all) var(--op-color-primary-plus-three);
2413
+ color: var(--op-color-primary-on-plus-eight);
2414
+ }
2415
+ /* Default Focus State */
2416
+ &:focus-visible {
2417
+ background-color: var(--op-color-neutral-plus-eight);
2418
+ box-shadow: var(--op-input-focus-primary);
2419
+ color: var(--op-color-neutral-on-plus-eight);
2420
+ }
2421
+ /* Default Borderless State */
2422
+ &.btn--no-border {
2423
+ background-color: transparent;
2424
+ box-shadow: none;
2425
+ color: var(--op-color-primary-on-plus-max);
2426
+ /* Default Borderless + Active State. */
2427
+ &.btn--active {
2428
+ background-color: var(--op-color-primary-plus-five);
2429
+ box-shadow: inset var(--op-border-all) var(--op-color-primary-plus-three);
2430
+ color: var(--op-color-primary-on-plus-five);
2431
+ }
2432
+ /* Default Borderless + Hover State */
2433
+ &:hover {
2434
+ background-color: var(--op-color-primary-plus-eight);
2435
+ box-shadow: inset var(--op-border-all) var(--op-color-primary-plus-five);
2436
+ color: var(--op-color-primary-on-plus-eight);
2437
+ }
2438
+ /* Default Borderless + Focus State */
2439
+ &:focus-visible {
2440
+ background-color: var(--op-color-primary-plus-eight);
2441
+ box-shadow: var(--op-input-focus-primary);
2442
+ color: var(--op-color-primary-on-plus-eight);
2443
+ }
2444
+ }
2445
+ /* Pill Modifier */
2446
+ &.btn--pill {
2447
+ border-radius: var(--op-radius-pill);
2448
+ }
2449
+ /* Icon Modifier */
2450
+ &.btn--icon {
2451
+ width: var(--__op-btn-height);
2452
+ min-width: var(--__op-btn-height);
2453
+ padding: 0;
2454
+ }
2455
+ /* Icon With Label Modifier */
2456
+ &.btn--icon-with-label {
2457
+ flex-direction: column;
2458
+ padding: var(--op-space-small);
2459
+ gap: var(--op-space-3x-small);
2460
+ }
2461
+ /* Size Modifiers */
2462
+ &.btn--small {
2463
+ --__op-btn-height: var(--_op-btn-height-small);
2464
+ --__op-btn-font-size: var(--_op-btn-font-small);
2465
+ --__op-btn-padding: var(--_op-btn-padding-small);
2456
2466
  }
2457
- .btn--small.btn-warning, .btn--small.btn-destructive,
2458
- .btn--small.btn-delete, .btn--small.btn-primary, .btn--small.btn, .btn--medium.btn-warning, .btn--medium.btn-destructive,
2459
- .btn--medium.btn-delete, .btn--medium.btn-primary, .btn--medium.btn, .btn--large.btn-warning, .btn--large.btn-destructive,
2460
- .btn--large.btn-delete, .btn--large.btn-primary, .btn--large.btn {
2467
+ &.btn--medium {
2468
+ --__op-btn-height: var(--_op-btn-height-medium);
2469
+ --__op-btn-font-size: var(--_op-btn-font-medium);
2470
+ --__op-btn-padding: var(--_op-btn-padding-medium);
2471
+ }
2472
+ &.btn--large {
2461
2473
  --__op-btn-height: var(--_op-btn-height-large);
2462
2474
  --__op-btn-font-size: var(--_op-btn-font-large);
2463
2475
  --__op-btn-padding: var(--_op-btn-padding-large);
2464
2476
  }
2477
+ /* Disabled Modifier */
2478
+ &.btn--disabled,
2479
+ &:disabled {
2480
+ opacity: var(--op-opacity-disabled);
2481
+ pointer-events: none;
2482
+ -webkit-user-select: none; /* stylelint-disable property-no-vendor-prefix */
2483
+ user-select: none;
2484
+ }
2485
+ /* Button with notification style badge */
2486
+ &.btn--with-badge {
2487
+ position: relative;
2488
+ }
2489
+ /* Focus State */
2490
+ &:focus,
2491
+ &:focus-within,
2492
+ &:focus-visible {
2493
+ outline: none;
2494
+ }
2495
+ /* https:/*uxmovement.com/mobile/optimal-size-and-spacing-for-mobile-buttons/ */
2496
+ /* --op-breakpoint-small */
2497
+ /* Variant Modifiers */
2498
+ &.btn--primary {
2499
+ background-color: var(--op-color-primary-base);
2500
+ box-shadow: inset var(--op-border-all) var(--op-color-primary-base);
2501
+ color: var(--op-color-primary-on-base);
2502
+ /* Active State */
2503
+ &.btn--active {
2504
+ background-color: var(--op-color-primary-minus-five);
2505
+ box-shadow: inset var(--op-border-all) var(--op-color-primary-plus-two);
2506
+ color: var(--op-color-primary-on-minus-five);
2507
+ }
2508
+ /* Hover State */
2509
+ &:hover {
2510
+ background-color: var(--op-color-primary-plus-one);
2511
+ box-shadow: inset var(--op-border-all) var(--op-color-primary-plus-one);
2512
+ color: var(--op-color-primary-on-plus-one);
2513
+ }
2514
+ /* Focus State */
2515
+ &:focus-visible {
2516
+ background-color: var(--op-color-primary-base);
2517
+ box-shadow: var(--op-input-focus-primary);
2518
+ color: var(--op-color-primary-on-base);
2519
+ }
2520
+ /* Borderless State */
2521
+ &.btn--no-border {
2522
+ background-color: transparent;
2523
+ box-shadow: none;
2524
+ color: var(--op-color-primary-base);
2525
+ /* Borderless + Active State */
2526
+ &.btn--active {
2527
+ background-color: var(--op-color-primary-plus-five);
2528
+ box-shadow: inset var(--op-border-all) var(--op-color-primary-plus-three);
2529
+ color: var(--op-color-primary-on-plus-five);
2530
+ }
2531
+ /* Borderless + Hover State */
2532
+ &:hover {
2533
+ background-color: var(--op-color-primary-plus-eight);
2534
+ box-shadow: inset var(--op-border-all) var(--op-color-primary-plus-five);
2535
+ color: var(--op-color-primary-on-plus-eight);
2536
+ }
2537
+ /* Borderless + Focus State */
2538
+ &:focus-visible {
2539
+ background-color: var(--op-color-primary-plus-eight);
2540
+ box-shadow: var(--op-input-focus-primary);
2541
+ color: var(--op-color-primary-on-plus-eight);
2542
+ }
2543
+ }
2544
+ }
2545
+ &.btn--destructive,
2546
+ &.btn--delete {
2547
+ background-color: var(--op-color-alerts-danger-base);
2548
+ box-shadow: inset var(--op-border-all) var(--op-color-alerts-danger-base);
2549
+ color: var(--op-color-alerts-danger-on-base);
2550
+ /* Active State */
2551
+ &.btn--active {
2552
+ background-color: var(--op-color-alerts-danger-plus-five);
2553
+ box-shadow: inset var(--op-border-all) var(--op-color-alerts-danger-plus-three);
2554
+ color: var(--op-color-alerts-danger-on-plus-five);
2555
+ }
2556
+ /* Hover State */
2557
+ &:hover {
2558
+ background-color: var(--op-color-alerts-danger-minus-two);
2559
+ box-shadow: inset var(--op-border-all) var(--op-color-alerts-danger-minus-two);
2560
+ color: var(--op-color-alerts-danger-on-minus-two);
2561
+ }
2562
+ /* Focus State */
2563
+ &:focus-visible {
2564
+ background-color: var(--op-color-alerts-danger-base);
2565
+ box-shadow: var(--op-input-focus-danger);
2566
+ color: var(--op-color-alerts-danger-on-base);
2567
+ }
2568
+ }
2569
+ &.btn--warning {
2570
+ background-color: var(--op-color-alerts-warning-base);
2571
+ box-shadow: inset var(--op-border-all) var(--op-color-alerts-warning-base);
2572
+ color: var(--op-color-alerts-warning-on-base);
2573
+ /* Active State */
2574
+ &.btn--active {
2575
+ background-color: var(--op-color-alerts-warning-plus-five);
2576
+ box-shadow: inset var(--op-border-all) var(--op-color-alerts-warning-plus-three);
2577
+ color: var(--op-color-alerts-warning-on-plus-five);
2578
+ }
2579
+ /* Hover State */
2580
+ &:hover {
2581
+ background-color: var(--op-color-alerts-warning-minus-two);
2582
+ box-shadow: inset var(--op-border-all) var(--op-color-alerts-warning-minus-two);
2583
+ color: var(--op-color-alerts-warning-on-minus-two);
2584
+ }
2585
+ /* Focus State */
2586
+ &:focus-visible {
2587
+ background-color: var(--op-color-alerts-warning-base);
2588
+ box-shadow: var(--op-input-focus-warning);
2589
+ color: var(--op-color-alerts-warning-on-base);
2590
+ }
2591
+ }
2465
2592
  }
2466
-
2467
- .btn {
2468
- background-color: var(--op-color-neutral-plus-eight);
2469
- box-shadow: inset var(--op-border-all) var(--op-color-neutral-plus-four);
2470
- color: var(--op-color-neutral-on-plus-eight);
2471
- }
2472
- .btn.btn--active {
2473
- background-color: var(--op-color-primary-plus-five);
2474
- box-shadow: inset var(--op-border-all) var(--op-color-primary-plus-three);
2475
- color: var(--op-color-primary-on-plus-five);
2476
- }
2477
- .btn:hover {
2478
- background-color: var(--op-color-primary-plus-eight);
2479
- box-shadow: inset var(--op-border-all) var(--op-color-primary-plus-three);
2480
- color: var(--op-color-primary-on-plus-eight);
2481
- }
2482
- .btn:focus-visible {
2483
- background-color: var(--op-color-neutral-plus-eight);
2484
- box-shadow: var(--op-input-focus-primary);
2485
- color: var(--op-color-neutral-on-plus-eight);
2486
- }
2487
- .btn.btn--no-border {
2488
- background-color: transparent;
2489
- box-shadow: none;
2490
- color: var(--op-color-primary-on-plus-max);
2491
- }
2492
- .btn.btn--no-border.btn--active {
2493
- background-color: var(--op-color-primary-plus-five);
2494
- box-shadow: inset var(--op-border-all) var(--op-color-primary-plus-three);
2495
- color: var(--op-color-primary-on-plus-five);
2496
- }
2497
- .btn.btn--no-border:hover {
2498
- background-color: var(--op-color-primary-plus-eight);
2499
- box-shadow: inset var(--op-border-all) var(--op-color-primary-plus-five);
2500
- color: var(--op-color-primary-on-plus-eight);
2501
- }
2502
- .btn.btn--no-border:focus-visible {
2503
- background-color: var(--op-color-primary-plus-eight);
2504
- box-shadow: var(--op-input-focus-primary);
2505
- color: var(--op-color-primary-on-plus-eight);
2506
- }
2507
-
2508
- .btn-primary {
2509
- background-color: var(--op-color-primary-base);
2510
- box-shadow: inset var(--op-border-all) var(--op-color-primary-base);
2511
- color: var(--op-color-primary-on-base);
2512
- }
2513
- .btn-primary.btn--active {
2514
- background-color: var(--op-color-primary-minus-five);
2515
- box-shadow: inset var(--op-border-all) var(--op-color-primary-plus-two);
2516
- color: var(--op-color-primary-on-minus-five);
2517
- }
2518
- .btn-primary:hover {
2519
- background-color: var(--op-color-primary-plus-one);
2520
- box-shadow: inset var(--op-border-all) var(--op-color-primary-plus-one);
2521
- color: var(--op-color-primary-on-plus-one);
2522
- }
2523
- .btn-primary:focus-visible {
2524
- background-color: var(--op-color-primary-base);
2525
- box-shadow: var(--op-input-focus-primary);
2526
- color: var(--op-color-primary-on-base);
2527
- }
2528
- .btn-primary.btn--no-border {
2529
- background-color: transparent;
2530
- box-shadow: none;
2531
- color: var(--op-color-primary-base);
2532
- }
2533
- .btn-primary.btn--no-border.btn--active {
2534
- background-color: var(--op-color-primary-plus-five);
2535
- box-shadow: inset var(--op-border-all) var(--op-color-primary-plus-three);
2536
- color: var(--op-color-primary-on-plus-five);
2537
- }
2538
- .btn-primary.btn--no-border:hover {
2539
- background-color: var(--op-color-primary-plus-eight);
2540
- box-shadow: inset var(--op-border-all) var(--op-color-primary-plus-five);
2541
- color: var(--op-color-primary-on-plus-eight);
2542
- }
2543
- .btn-primary.btn--no-border:focus-visible {
2544
- background-color: var(--op-color-primary-plus-eight);
2545
- box-shadow: var(--op-input-focus-primary);
2546
- color: var(--op-color-primary-on-plus-eight);
2547
- }
2548
-
2549
- .btn-destructive,
2550
- .btn-delete {
2551
- background-color: var(--op-color-alerts-danger-base);
2552
- box-shadow: inset var(--op-border-all) var(--op-color-alerts-danger-base);
2553
- color: var(--op-color-alerts-danger-on-base);
2554
- }
2555
- .btn-destructive.btn--active,
2556
- .btn-delete.btn--active {
2557
- background-color: var(--op-color-alerts-danger-plus-five);
2558
- box-shadow: inset var(--op-border-all) var(--op-color-alerts-danger-plus-three);
2559
- color: var(--op-color-alerts-danger-on-plus-five);
2560
- }
2561
- .btn-destructive:hover,
2562
- .btn-delete:hover {
2563
- background-color: var(--op-color-alerts-danger-minus-two);
2564
- box-shadow: inset var(--op-border-all) var(--op-color-alerts-danger-minus-two);
2565
- color: var(--op-color-alerts-danger-on-minus-two);
2566
- }
2567
- .btn-destructive:focus-visible,
2568
- .btn-delete:focus-visible {
2569
- background-color: var(--op-color-alerts-danger-base);
2570
- box-shadow: var(--op-input-focus-danger);
2571
- color: var(--op-color-alerts-danger-on-base);
2572
- }
2573
-
2574
- .btn-warning {
2575
- background-color: var(--op-color-alerts-warning-base);
2576
- box-shadow: inset var(--op-border-all) var(--op-color-alerts-warning-base);
2577
- color: var(--op-color-alerts-warning-on-base);
2578
- }
2579
- .btn-warning.btn--active {
2580
- background-color: var(--op-color-alerts-warning-plus-five);
2581
- box-shadow: inset var(--op-border-all) var(--op-color-alerts-warning-plus-three);
2582
- color: var(--op-color-alerts-warning-on-plus-five);
2583
- }
2584
- .btn-warning:hover {
2585
- background-color: var(--op-color-alerts-warning-minus-two);
2586
- box-shadow: inset var(--op-border-all) var(--op-color-alerts-warning-minus-two);
2587
- color: var(--op-color-alerts-warning-on-minus-two);
2588
- }
2589
- .btn-warning:focus-visible {
2590
- background-color: var(--op-color-alerts-warning-base);
2591
- box-shadow: var(--op-input-focus-warning);
2592
- color: var(--op-color-alerts-warning-on-base);
2593
+ @media (width <= 768px) {
2594
+ .btn {
2595
+ --__op-btn-height: var(--_op-btn-height-large);
2596
+ --__op-btn-font-size: var(--_op-btn-font-large);
2597
+ &.btn--small,
2598
+ &.btn--medium,
2599
+ &.btn--large {
2600
+ --__op-btn-height: var(--_op-btn-height-large);
2601
+ --__op-btn-font-size: var(--_op-btn-font-large);
2602
+ --__op-btn-padding: var(--_op-btn-padding-large);
2603
+ }
2604
+ }
2593
2605
  }
2594
2606
 
2595
2607
  .btn-group {
@@ -2598,85 +2610,33 @@ small {
2598
2610
  --op-btn-group-focus-z-index: 3;
2599
2611
  display: inline-flex;
2600
2612
  align-items: center;
2601
- }
2602
- .btn-group .btn + .btn,
2603
- .btn-group .btn + .btn-primary,
2604
- .btn-group .btn + .btn-destructive,
2605
- .btn-group .btn + .btn-delete,
2606
- .btn-group .btn + .btn-warning,
2607
- .btn-group .btn-primary + .btn,
2608
- .btn-group .btn-primary + .btn-primary,
2609
- .btn-group .btn-primary + .btn-destructive,
2610
- .btn-group .btn-primary + .btn-delete,
2611
- .btn-group .btn-primary + .btn-warning,
2612
- .btn-group .btn-destructive + .btn,
2613
- .btn-group .btn-destructive + .btn-primary,
2614
- .btn-group .btn-destructive + .btn-destructive,
2615
- .btn-group .btn-destructive + .btn-delete,
2616
- .btn-group .btn-destructive + .btn-warning,
2617
- .btn-group .btn-delete + .btn,
2618
- .btn-group .btn-delete + .btn-primary,
2619
- .btn-group .btn-delete + .btn-destructive,
2620
- .btn-group .btn-delete + .btn-delete,
2621
- .btn-group .btn-delete + .btn-warning,
2622
- .btn-group .btn-warning + .btn,
2623
- .btn-group .btn-warning + .btn-primary,
2624
- .btn-group .btn-warning + .btn-destructive,
2625
- .btn-group .btn-warning + .btn-delete,
2626
- .btn-group .btn-warning + .btn-warning {
2627
- margin-left: -1px;
2628
- }
2629
- .btn-group .btn:hover,
2630
- .btn-group .btn-primary:hover,
2631
- .btn-group .btn-destructive:hover,
2632
- .btn-group .btn-delete:hover,
2633
- .btn-group .btn-warning:hover {
2634
- z-index: var(--op-btn-group-hover-z-index);
2635
- }
2636
- .btn-group .btn.btn--active,
2637
- .btn-group .btn-primary.btn--active,
2638
- .btn-group .btn-destructive.btn--active,
2639
- .btn-group .btn-delete.btn--active,
2640
- .btn-group .btn-warning.btn--active {
2641
- z-index: var(--op-btn-group-active-z-index);
2642
- }
2643
- .btn-group .btn:focus, .btn-group .btn:focus-within, .btn-group .btn:focus-visible,
2644
- .btn-group .btn-primary:focus,
2645
- .btn-group .btn-primary:focus-within,
2646
- .btn-group .btn-primary:focus-visible,
2647
- .btn-group .btn-destructive:focus,
2648
- .btn-group .btn-destructive:focus-within,
2649
- .btn-group .btn-destructive:focus-visible,
2650
- .btn-group .btn-delete:focus,
2651
- .btn-group .btn-delete:focus-within,
2652
- .btn-group .btn-delete:focus-visible,
2653
- .btn-group .btn-warning:focus,
2654
- .btn-group .btn-warning:focus-within,
2655
- .btn-group .btn-warning:focus-visible {
2656
- z-index: var(--op-btn-group-focus-z-index);
2657
- }
2658
- .btn-group .btn:not(:first-child, :last-child),
2659
- .btn-group .btn-primary:not(:first-child, :last-child),
2660
- .btn-group .btn-destructive:not(:first-child, :last-child),
2661
- .btn-group .btn-delete:not(:first-child, :last-child),
2662
- .btn-group .btn-warning:not(:first-child, :last-child) {
2663
- border-radius: 0;
2664
- }
2665
- .btn-group .btn:first-child:not(:last-child),
2666
- .btn-group .btn-primary:first-child:not(:last-child),
2667
- .btn-group .btn-destructive:first-child:not(:last-child),
2668
- .btn-group .btn-delete:first-child:not(:last-child),
2669
- .btn-group .btn-warning:first-child:not(:last-child) {
2670
- border-bottom-right-radius: 0;
2671
- border-top-right-radius: 0;
2672
- }
2673
- .btn-group .btn:last-child:not(:first-child),
2674
- .btn-group .btn-primary:last-child:not(:first-child),
2675
- .btn-group .btn-destructive:last-child:not(:first-child),
2676
- .btn-group .btn-delete:last-child:not(:first-child),
2677
- .btn-group .btn-warning:last-child:not(:first-child) {
2678
- border-bottom-left-radius: 0;
2679
- border-top-left-radius: 0;
2613
+ .btn {
2614
+ + .btn {
2615
+ margin-inline-start: calc(var(--op-border-width) * -1);
2616
+ }
2617
+ &:hover {
2618
+ z-index: var(--op-btn-group-hover-z-index);
2619
+ }
2620
+ &.btn--active {
2621
+ z-index: var(--op-btn-group-active-z-index);
2622
+ }
2623
+ &:focus,
2624
+ &:focus-within,
2625
+ &:focus-visible {
2626
+ z-index: var(--op-btn-group-focus-z-index);
2627
+ }
2628
+ &:not(:first-child, :last-child) {
2629
+ border-radius: 0;
2630
+ }
2631
+ &:first-child:not(:last-child) {
2632
+ border-bottom-right-radius: 0;
2633
+ border-top-right-radius: 0;
2634
+ }
2635
+ &:last-child:not(:first-child) {
2636
+ border-bottom-left-radius: 0;
2637
+ border-top-left-radius: 0;
2638
+ }
2639
+ }
2680
2640
  }
2681
2641
 
2682
2642
  .btn-group-toolbar {
@@ -2854,38 +2814,79 @@ small {
2854
2814
  }
2855
2815
 
2856
2816
  .form-control {
2817
+ /* Public API (customizable component options) */
2857
2818
  --_op-form-control-height-small: var(--op-input-height-small);
2858
2819
  --_op-form-control-height-medium: var(--op-input-height-medium);
2859
2820
  --_op-form-control-height-large: var(--op-input-height-large);
2860
2821
  --_op-form-control-font-small: var(--op-font-x-small);
2861
2822
  --_op-form-control-font-medium: var(--op-font-small);
2862
2823
  --_op-form-control-font-large: var(--op-font-small);
2824
+ /* Private API (component option defaults) */
2863
2825
  --__op-form-control-height: var(--_op-form-control-height-large);
2864
2826
  --__op-form-control-font-size: var(--_op-form-control-font-large);
2865
2827
  min-width: var(--__op-form-control-height);
2866
2828
  height: var(--__op-form-control-height);
2829
+ /* Size Modifiers */
2830
+ &.form-control--small {
2831
+ --__op-form-control-height: var(--_op-form-control-height-small);
2832
+ --__op-form-control-font-size: var(--_op-form-control-font-small);
2833
+ }
2834
+ &.form-control--medium {
2835
+ --__op-form-control-height: var(--_op-form-control-height-medium);
2836
+ --__op-form-control-font-size: var(--_op-form-control-font-medium);
2837
+ }
2838
+ &.form-control--large {
2839
+ --__op-form-control-height: var(--_op-form-control-height-large);
2840
+ --__op-form-control-font-size: var(--_op-form-control-font-large);
2841
+ }
2842
+ /* Disabled State */
2843
+ &:disabled {
2844
+ cursor: not-allowed;
2845
+ opacity: var(--_op-form-control-opacity-disabled);
2846
+ }
2847
+ /* Readonly State */
2848
+ &[readonly] {
2849
+ padding: 0;
2850
+ background: transparent;
2851
+ box-shadow: none;
2852
+ color: var(--op-color-on-background);
2853
+ pointer-events: none;
2854
+ user-select: none;
2855
+ /* stylelint-disable selector-no-vendor-prefix */
2856
+ &::-webkit-input-placeholder {
2857
+ color: var(--op-color-on-background);
2858
+ }
2859
+ /* stylelint-enable selector-no-vendor-prefix */
2860
+ }
2867
2861
  }
2868
- .form-control--small.form-control {
2869
- --__op-form-control-height: var(--_op-form-control-height-small);
2870
- --__op-form-control-font-size: var(--_op-form-control-font-small);
2871
- }
2872
- .form-control--medium.form-control {
2873
- --__op-form-control-height: var(--_op-form-control-height-medium);
2874
- --__op-form-control-font-size: var(--_op-form-control-font-medium);
2875
- }
2876
- .form-control--large.form-control {
2877
- --__op-form-control-height: var(--_op-form-control-height-large);
2878
- --__op-form-control-font-size: var(--_op-form-control-font-large);
2862
+
2863
+ /* Radio or Checkbox Form Control */
2864
+ .form-control:is([type=radio], [type=checkbox]) {
2865
+ /* Public API (customizable component options) */
2866
+ --_op-form-control-height-small: var(--op-space-medium);
2867
+ --_op-form-control-height-medium: var(--op-space-large);
2868
+ --_op-form-control-height-large: var(--op-space-x-large);
2869
+ width: var(--__op-form-control-height);
2870
+ height: var(--__op-form-control-height);
2871
+ align-self: center;
2872
+ margin: 0;
2873
+ accent-color: var(--op-color-primary-base);
2874
+ cursor: pointer;
2875
+ & + label {
2876
+ align-self: center;
2877
+ }
2879
2878
  }
2880
2879
 
2880
+ /* Any Form Control that is not a radio or checkbox */
2881
2881
  .form-control:not([type=radio], [type=checkbox]) {
2882
+ /* Public API (customizable component options) */
2882
2883
  --_op-form-control-opacity-disabled: var(--op-opacity-disabled);
2884
+ /* Private API (component option defaults) */
2883
2885
  --__op-form-control-border-color: var(--op-color-neutral-plus-four);
2884
2886
  display: block;
2885
2887
  width: 100%;
2886
2888
  min-width: var(--__op-form-control-height);
2887
2889
  height: var(--__op-form-control-height);
2888
- padding: var(--op-space-2x-small) var(--op-space-x-small) var(--op-space-2x-small) var(--op-space-small);
2889
2890
  border: none;
2890
2891
  border-radius: var(--op-radius-medium);
2891
2892
  appearance: none;
@@ -2895,124 +2896,96 @@ small {
2895
2896
  cursor: text;
2896
2897
  font-size: var(--__op-form-control-font-size);
2897
2898
  line-height: var(--op-line-height-base);
2898
- }
2899
- .form-control:hover:not(:disabled, [readonly]):not([type=radio], [type=checkbox]) {
2900
- box-shadow: var(--op-border-all) var(--op-color-primary-plus-three);
2901
- }
2902
- .form-control:focus:not([type=radio], [type=checkbox]), .form-control:focus-within:not([type=radio], [type=checkbox]), .form-control:focus-visible:not([type=radio], [type=checkbox]) {
2903
- outline: none;
2904
- }
2905
- .form-control:focus-visible:not([readonly]):not([type=radio], [type=checkbox]) {
2906
- background-color: var(--op-color-primary-plus-seven);
2907
- box-shadow: var(--op-input-focus-primary);
2908
- color: var(--op-color-primary-on-plus-seven);
2909
- }
2910
- .form-control--no-border.form-control:not([type=radio], [type=checkbox]) {
2911
- background-color: transparent;
2912
- box-shadow: none;
2913
- color: var(--op-color-primary-on-plus-max);
2914
- }
2915
- .form-control--no-border.form-control:focus-visible:not([readonly]):not([type=radio], [type=checkbox]) {
2916
- background-color: var(--op-color-primary-plus-seven);
2917
- box-shadow: var(--op-input-focus-primary);
2918
- color: var(--op-color-primary-on-plus-seven);
2919
- }
2920
- .form-control--no-border.form-control:hover:not(:disabled, [readonly]):not([type=radio], [type=checkbox]) {
2921
- background-color: var(--op-color-primary-plus-eight);
2922
- box-shadow: inset var(--op-border-all) var(--op-color-primary-plus-two);
2923
- color: var(--op-color-primary-on-plus-eight);
2899
+ padding-block: var(--op-space-2x-small);
2900
+ padding-inline: var(--op-space-small) var(--op-space-x-small);
2901
+ /* Focus State */
2902
+ &:focus,
2903
+ &:focus-within,
2904
+ &:focus-visible {
2905
+ outline: none;
2906
+ }
2907
+ /* Hover State */
2908
+ &:hover:not(:disabled, [readonly]) {
2909
+ box-shadow: var(--op-border-all) var(--op-color-primary-plus-three);
2910
+ }
2911
+ &:focus-visible:not([readonly]) {
2912
+ background-color: var(--op-color-primary-plus-seven);
2913
+ box-shadow: var(--op-input-focus-primary);
2914
+ color: var(--op-color-primary-on-plus-seven);
2915
+ }
2916
+ /* Borderless State */
2917
+ &.form-control--no-border {
2918
+ background-color: transparent;
2919
+ box-shadow: none;
2920
+ color: var(--op-color-primary-on-plus-max);
2921
+ &:focus-visible:not([readonly]) {
2922
+ background-color: var(--op-color-primary-plus-seven);
2923
+ box-shadow: var(--op-input-focus-primary);
2924
+ color: var(--op-color-primary-on-plus-seven);
2925
+ }
2926
+ /* Borderless + Hover State */
2927
+ &:hover:not(:disabled, [readonly]) {
2928
+ background-color: var(--op-color-primary-plus-eight);
2929
+ box-shadow: inset var(--op-border-all) var(--op-color-primary-plus-two);
2930
+ color: var(--op-color-primary-on-plus-eight);
2931
+ }
2932
+ }
2924
2933
  }
2925
2934
 
2926
- .form-control[type=radio], .form-control[type=checkbox] {
2927
- --_op-form-control-height-small: var(--op-space-medium);
2928
- --_op-form-control-height-medium: var(--op-space-large);
2929
- --_op-form-control-height-large: var(--op-space-x-large);
2930
- width: var(--__op-form-control-height);
2931
- height: var(--__op-form-control-height);
2932
- align-self: center;
2933
- margin: 0;
2934
- accent-color: var(--op-color-primary-base);
2935
+ /* Color Form Control */
2936
+ .form-control[type=color] {
2937
+ padding: var(--op-space-2x-small);
2935
2938
  cursor: pointer;
2939
+ &::-webkit-color-swatch-wrapper {
2940
+ padding: 0;
2941
+ }
2942
+ &::-webkit-color-swatch {
2943
+ border: none;
2944
+ border-radius: var(--op-radius-medium);
2945
+ }
2936
2946
  }
2937
- .form-control[type=radio] + label, .form-control[type=checkbox] + label {
2938
- align-self: center;
2947
+
2948
+ /* File Form Control */
2949
+ .form-control[type=file] {
2950
+ padding-block: 0;
2951
+ &::file-selector-button {
2952
+ --__op-btn-base-height: var(--op-input-height-small);
2953
+ --__op-btn-height: var(--__op-btn-base-height);
2954
+ display: inline-flex;
2955
+ min-height: var(--__op-btn-height);
2956
+ align-items: center;
2957
+ justify-content: center;
2958
+ border: none;
2959
+ border-radius: var(--op-radius-medium);
2960
+ appearance: none;
2961
+ background-color: var(--op-color-neutral-plus-eight);
2962
+ box-shadow: inset var(--op-border-all) var(--op-color-neutral-plus-four);
2963
+ color: var(--op-color-neutral-on-plus-eight);
2964
+ cursor: pointer;
2965
+ font-size: var(--op-font-x-small);
2966
+ font-weight: var(--op-font-weight-normal);
2967
+ gap: var(--op-space-x-small);
2968
+ margin-block: calc(var(--__op-form-control-height) / 2 - var(--__op-btn-height) / 2);
2969
+ padding-block: 0;
2970
+ padding-inline: var(--op-space-x-small);
2971
+ text-align: center;
2972
+ text-decoration: none;
2973
+ transition: var(--op-transition-input);
2974
+ white-space: nowrap;
2975
+ }
2976
+ &.form-control--small::file-selector-button {
2977
+ --__op-btn-height: calc(var(--__op-btn-base-height) - var(--op-space-x-small));
2978
+ }
2939
2979
  }
2940
2980
 
2941
2981
  select.form-control:not([multiple], [type=radio], [type=checkbox]) {
2942
- padding-right: var(--op-space-3x-large);
2943
2982
  appearance: none;
2944
2983
  background-image: var(--op-encoded-images-dropdown-arrow);
2945
2984
  background-position: center right;
2946
2985
  background-position-x: calc(100% - (var(--op-space-3x-large) / 2 - var(--op-encoded-images-dropdown-arrow-width) / 2));
2947
2986
  background-repeat: no-repeat;
2948
2987
  cursor: pointer;
2949
- }
2950
-
2951
- .form-label {
2952
- color: var(--op-color-on-background);
2953
- font-size: var(--op-font-x-small);
2954
- font-weight: var(--op-font-weight-normal);
2955
- letter-spacing: var(--op-letter-spacing-label);
2956
- line-height: var(--op-line-height-base);
2957
- }
2958
-
2959
- .form-control[type=color] {
2960
- padding: var(--op-space-2x-small);
2961
- cursor: pointer;
2962
- }
2963
- .form-control[type=color]::-webkit-color-swatch-wrapper {
2964
- padding: 0;
2965
- }
2966
- .form-control[type=color]::-webkit-color-swatch {
2967
- border: none;
2968
- border-radius: var(--op-radius-medium);
2969
- }
2970
- .form-control[type=file] {
2971
- padding-block: 0;
2972
- }
2973
- .form-control[type=file]::file-selector-button {
2974
- --__op-btn-base-height: var(--op-input-height-small);
2975
- --__op-btn-height: var(--__op-btn-base-height);
2976
- display: inline-flex;
2977
- min-height: var(--__op-btn-height);
2978
- align-items: center;
2979
- justify-content: center;
2980
- padding: 0 var(--op-space-x-small);
2981
- border: none;
2982
- border-radius: var(--op-radius-medium);
2983
- appearance: none;
2984
- background-color: var(--op-color-neutral-plus-eight);
2985
- box-shadow: inset var(--op-border-all) var(--op-color-neutral-plus-four);
2986
- color: var(--op-color-neutral-on-plus-eight);
2987
- cursor: pointer;
2988
- font-size: var(--op-font-x-small);
2989
- font-weight: var(--op-font-weight-normal);
2990
- gap: var(--op-space-x-small);
2991
- margin-block: calc(var(--__op-form-control-height) / 2 - var(--__op-btn-height) / 2);
2992
- text-align: center;
2993
- text-decoration: none;
2994
- transition: var(--op-transition-input);
2995
- white-space: nowrap;
2996
- }
2997
- .form-control[type=file].form-control--small::file-selector-button {
2998
- --__op-btn-height: calc(var(--__op-btn-base-height) - var(--op-space-x-small));
2999
- }
3000
- .form-control:disabled {
3001
- cursor: not-allowed;
3002
- opacity: var(--_op-form-control-opacity-disabled);
3003
- }
3004
- .form-control[readonly] {
3005
- padding: 0;
3006
- background: transparent;
3007
- box-shadow: none;
3008
- color: var(--op-color-on-background);
3009
- pointer-events: none;
3010
- user-select: none;
3011
- /* stylelint-disable selector-no-vendor-prefix */
3012
- /* stylelint-enable selector-no-vendor-prefix */
3013
- }
3014
- .form-control[readonly]::-webkit-input-placeholder {
3015
- color: var(--op-color-on-background);
2988
+ padding-inline-end: var(--op-space-3x-large);
3016
2989
  }
3017
2990
 
3018
2991
  select.form-control[multiple] {
@@ -3025,49 +2998,12 @@ textarea.form-control:not([type=radio], [type=checkbox]) {
3025
2998
  min-height: var(--__op-form-control-height);
3026
2999
  }
3027
3000
 
3028
- .form-group--error {
3029
- /* stylelint-disable no-descending-specificity */
3030
- /* stylelint-enable no-descending-specificity */
3031
- }
3032
- .form-group--error .form-control {
3033
- box-shadow: var(--op-border-all) var(--op-color-alerts-danger-base);
3034
- }
3035
- .form-group--error .form-control[type=radio], .form-group--error .form-control[type=checkbox] {
3036
- box-shadow: none;
3037
- }
3038
- .form-group--error .form-control[type=radio] + label, .form-group--error .form-control[type=checkbox] + label {
3039
- color: var(--op-color-alerts-danger-minus-three);
3040
- font-weight: var(--op-font-weight-bold);
3041
- }
3042
- .form-group--error .form-control:hover:not(:disabled, [readonly]) {
3043
- background-color: var(--op-color-alerts-danger-plus-seven);
3044
- box-shadow: var(--op-border-all) var(--op-color-alerts-danger-minus-two);
3045
- color: var(--op-color-alerts-danger-on-plus-seven);
3046
- }
3047
- .form-group--error .form-control[readonly] {
3048
- box-shadow: none;
3049
- }
3050
- .form-group--error .form-control:focus-visible:not([readonly]) {
3051
- background-color: var(--op-color-alerts-danger-plus-seven);
3052
- box-shadow: var(--op-input-focus-danger);
3053
- color: var(--op-color-alerts-danger-on-plus-seven);
3054
- }
3055
- .form-group--error .form-control.form-control--no-border {
3056
- border-radius: 0;
3057
- box-shadow: var(--op-border-bottom) var(--op-color-alerts-danger-base);
3058
- }
3059
- .form-group--error .form-control.form-control--no-border[readonly] {
3060
- box-shadow: none;
3061
- }
3062
- .form-group--error .form-control.form-control--no-border:focus-visible:not([readonly]) {
3063
- background-color: var(--op-color-alerts-danger-plus-seven);
3064
- box-shadow: var(--op-border-bottom) var(--op-color-alerts-danger-base);
3065
- color: var(--op-color-alerts-danger-on-plus-seven);
3066
- }
3067
- .form-group--error .form-control.form-control--no-border:hover:not(:disabled, [readonly]) {
3068
- background-color: var(--op-color-alerts-danger-plus-eight);
3069
- box-shadow: var(--op-border-bottom) var(--op-color-alerts-danger-base);
3070
- color: var(--op-color-alerts-danger-on-plus-eight);
3001
+ .form-label {
3002
+ color: var(--op-color-on-background);
3003
+ font-size: var(--op-font-x-small);
3004
+ font-weight: var(--op-font-weight-normal);
3005
+ letter-spacing: var(--op-letter-spacing-label);
3006
+ line-height: var(--op-line-height-base);
3071
3007
  }
3072
3008
 
3073
3009
  .form-error {
@@ -3085,59 +3021,114 @@ textarea.form-control:not([type=radio], [type=checkbox]) {
3085
3021
  .form-error-summary {
3086
3022
  padding: var(--op-space-large);
3087
3023
  border-radius: var(--op-radius-large);
3088
- margin-bottom: var(--op-space-large);
3089
3024
  background-color: var(--op-color-alerts-danger-plus-seven);
3090
3025
  box-shadow: var(--op-border-all) var(--op-color-alerts-danger-on-plus-seven);
3091
3026
  color: var(--op-color-alerts-danger-on-plus-seven);
3092
- }
3093
- .form-error-summary h2 {
3094
- font-size: var(--op-font-medium);
3095
- }
3096
- .form-error-summary ul {
3097
- margin-bottom: 0;
3027
+ margin-block-end: var(--op-space-large);
3028
+ h2 {
3029
+ font-size: var(--op-font-medium);
3030
+ }
3031
+ ul {
3032
+ margin-block-end: 0;
3033
+ }
3098
3034
  }
3099
3035
 
3100
3036
  .form-group {
3101
3037
  display: grid;
3102
3038
  align-content: baseline;
3103
- padding: var(--op-space-small) 0;
3104
3039
  gap: var(--op-space-x-small);
3105
3040
  grid-auto-rows: auto;
3106
3041
  grid-template-columns: auto 1fr;
3042
+ padding-block: var(--op-space-small) 0;
3043
+ padding-inline: 0;
3044
+ /* Group Alignment */
3107
3045
  /* stylelint-disable no-descending-specificity */
3046
+ .form-label,
3047
+ .form-error,
3048
+ .form-hint,
3049
+ .form-control:not([type=radio], [type=checkbox]) {
3050
+ grid-column: 1/3;
3051
+ }
3108
3052
  /* stylelint-enable no-descending-specificity */
3109
- }
3110
- .form-group .form-label,
3111
- .form-group .form-error,
3112
- .form-group .form-hint,
3113
- .form-group .form-control:not([type=radio], [type=checkbox]) {
3114
- grid-column: 1/3;
3115
- }
3116
- .form-group .form-control[type=radio],
3117
- .form-group .form-control[type=checkbox] {
3118
- grid-column: 1/1;
3119
- }
3120
- .form-group .form-control[type=radio] + .form-label,
3121
- .form-group .form-control[type=checkbox] + .form-label {
3122
- grid-column: 2/3;
3123
- grid-row: 1;
3053
+ .form-control[type=radio],
3054
+ .form-control[type=checkbox] {
3055
+ grid-column: 1/1;
3056
+ & + .form-label {
3057
+ grid-column: 2/3;
3058
+ grid-row: 1;
3059
+ }
3060
+ }
3124
3061
  }
3125
3062
 
3126
3063
  .form-group--inline {
3127
3064
  align-items: center;
3065
+ /* Group Alignment */
3128
3066
  /* stylelint-disable no-descending-specificity */
3067
+ .form-label {
3068
+ grid-column: unset;
3069
+ }
3070
+ .form-error,
3071
+ .form-hint {
3072
+ grid-column: 1/3;
3073
+ }
3074
+ .form-control:not([type=radio], [type=checkbox]),
3075
+ .switch {
3076
+ grid-column: unset;
3077
+ }
3129
3078
  /* stylelint-enable no-descending-specificity */
3130
3079
  }
3131
- .form-group--inline .form-label {
3132
- grid-column: unset;
3133
- }
3134
- .form-group--inline .form-error,
3135
- .form-group--inline .form-hint {
3136
- grid-column: 1/3;
3137
- }
3138
- .form-group--inline .form-control:not([type=radio], [type=checkbox]),
3139
- .form-group--inline .switch {
3140
- grid-column: unset;
3080
+
3081
+ .form-group--error {
3082
+ /* stylelint-disable no-descending-specificity */
3083
+ .form-control {
3084
+ box-shadow: var(--op-border-all) var(--op-color-alerts-danger-base);
3085
+ &[type=radio],
3086
+ &[type=checkbox] {
3087
+ box-shadow: none;
3088
+ & + label {
3089
+ color: var(--op-color-alerts-danger-minus-three);
3090
+ font-weight: var(--op-font-weight-bold);
3091
+ }
3092
+ }
3093
+ /* Error + Hover State */
3094
+ &:hover:not(:disabled, [readonly]) {
3095
+ background-color: var(--op-color-alerts-danger-plus-seven);
3096
+ box-shadow: var(--op-border-all) var(--op-color-alerts-danger-minus-two);
3097
+ color: var(--op-color-alerts-danger-on-plus-seven);
3098
+ }
3099
+ /* Readonly State */
3100
+ &[readonly] {
3101
+ box-shadow: none;
3102
+ }
3103
+ /* Error + Focus State */
3104
+ &:focus-visible:not([readonly]) {
3105
+ background-color: var(--op-color-alerts-danger-plus-seven);
3106
+ box-shadow: var(--op-input-focus-danger);
3107
+ color: var(--op-color-alerts-danger-on-plus-seven);
3108
+ }
3109
+ /* Borderless State */
3110
+ &.form-control--no-border {
3111
+ border-radius: 0;
3112
+ box-shadow: var(--op-border-bottom) var(--op-color-alerts-danger-base);
3113
+ /* Readonly State */
3114
+ &[readonly] {
3115
+ box-shadow: none;
3116
+ }
3117
+ /* Borderless + Focus State */
3118
+ &:focus-visible:not([readonly]) {
3119
+ background-color: var(--op-color-alerts-danger-plus-seven);
3120
+ box-shadow: var(--op-border-bottom) var(--op-color-alerts-danger-base);
3121
+ color: var(--op-color-alerts-danger-on-plus-seven);
3122
+ }
3123
+ /* Borderless + Hover State */
3124
+ &:hover:not(:disabled, [readonly]) {
3125
+ background-color: var(--op-color-alerts-danger-plus-eight);
3126
+ box-shadow: var(--op-border-bottom) var(--op-color-alerts-danger-base);
3127
+ color: var(--op-color-alerts-danger-on-plus-eight);
3128
+ }
3129
+ }
3130
+ }
3131
+ /* stylelint-enable no-descending-specificity */
3141
3132
  }
3142
3133
 
3143
3134
  .material-symbols-outlined,