@rolemodel/optics 1.3.0 → 1.4.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.
@@ -2019,34 +2019,38 @@ small {
2019
2019
  }
2020
2020
 
2021
2021
  .accordion {
2022
- --_op-accordion-summary-min-height: calc(8 * var(--op-size-unit));
2023
- }
2024
- .accordion summary {
2025
- display: grid;
2026
- min-height: var(--_op-accordion-summary-min-height);
2027
- align-items: center;
2028
- cursor: pointer;
2029
- gap: var(--op-space-2x-small);
2030
- grid-template-columns: auto 1fr auto;
2031
- }
2032
- .accordion summary::marker, .accordion summary::-webkit-details-marker {
2033
- display: none;
2034
- content: "";
2035
- }
2036
- .accordion summary .accordion__label {
2037
- color: var(--op-color-neutral-on-plus-max);
2038
- font-size: var(--op-font-x-small);
2039
- font-weight: var(--op-font-weight-semi-bold);
2040
- }
2041
- .accordion summary .accordion__marker {
2042
- --op-mso-optical-sizing: 48;
2043
- font-size: var(--op-font-x-large);
2044
- justify-self: flex-end;
2045
- transition: var(--op-transition-accordion);
2046
- user-select: none;
2047
- }
2048
- [open].accordion summary .accordion__marker {
2049
- rotate: 0.25turn;
2022
+ /* Public API (customizable component options) */
2023
+ --_op-accordion-summary-min-height: calc(8 * var(--op-size-unit)); /* 32px */
2024
+ summary {
2025
+ display: grid;
2026
+ min-height: var(--_op-accordion-summary-min-height);
2027
+ align-items: center;
2028
+ cursor: pointer;
2029
+ gap: var(--op-space-2x-small);
2030
+ grid-template-columns: auto 1fr auto;
2031
+ &::marker,
2032
+ &::-webkit-details-marker {
2033
+ display: none;
2034
+ content: "";
2035
+ }
2036
+ .accordion__label {
2037
+ color: var(--op-color-neutral-on-plus-max);
2038
+ font-size: var(--op-font-x-small);
2039
+ font-weight: var(--op-font-weight-semi-bold);
2040
+ }
2041
+ .accordion__marker {
2042
+ --op-mso-optical-sizing: 48;
2043
+ font-size: var(--op-font-x-large);
2044
+ justify-self: flex-end;
2045
+ transition: var(--op-transition-accordion);
2046
+ user-select: none;
2047
+ }
2048
+ }
2049
+ &[open] {
2050
+ summary .accordion__marker {
2051
+ rotate: 0.25turn;
2052
+ }
2053
+ }
2050
2054
  }
2051
2055
 
2052
2056
  .alert {
@@ -2190,6 +2194,7 @@ small {
2190
2194
  }
2191
2195
 
2192
2196
  .avatar {
2197
+ /* Public API (customizable component options) */
2193
2198
  --_op-avatar-border-radius: var(--op-radius-circle);
2194
2199
  --_op-avatar-inner-border-color: var(--op-color-neutral-minus-max);
2195
2200
  --_op-avatar-outer-border-color: var(--op-color-neutral-base);
@@ -2197,9 +2202,10 @@ small {
2197
2202
  --_op-avatar-outer-border-width: var(--op-border-width-large);
2198
2203
  --_op-avatar-disabled-opacity: var(--op-opacity-disabled);
2199
2204
  --_op-avatar-hover-opacity: var(--op-opacity-overlay);
2200
- --_op-avatar-size-small: calc(8 * var(--op-size-unit));
2201
- --_op-avatar-size-medium: calc(10 * var(--op-size-unit));
2202
- --_op-avatar-size-large: calc(14 * var(--op-size-unit));
2205
+ --_op-avatar-size-small: calc(8 * var(--op-size-unit)); /* 32px */
2206
+ --_op-avatar-size-medium: calc(10 * var(--op-size-unit)); /* 40px */
2207
+ --_op-avatar-size-large: calc(14 * var(--op-size-unit)); /* 56px */
2208
+ /* Private API (component option defaults) */
2203
2209
  --__op-avatar-size: var(--_op-avatar-size-large);
2204
2210
  position: relative;
2205
2211
  z-index: 1;
@@ -2210,54 +2216,60 @@ small {
2210
2216
  height: var(--__op-avatar-size);
2211
2217
  min-height: var(--__op-avatar-size);
2212
2218
  border-radius: var(--_op-avatar-border-radius);
2213
- }
2214
- .avatar::before {
2215
- position: absolute;
2216
- z-index: 2;
2217
- content: "";
2218
- inset: 0;
2219
- }
2220
- .avatar::after {
2221
- position: absolute;
2222
- z-index: 3;
2223
- border-radius: var(--_op-avatar-border-radius);
2224
- box-shadow: inset 0 0 0 var(--_op-avatar-outer-border-width) var(--_op-avatar-outer-border-color), inset 0 0 0 var(--_op-avatar-inner-border-width) var(--_op-avatar-inner-border-color);
2225
- content: "";
2226
- inset: 0;
2227
- }
2228
- .avatar img {
2229
- width: 100%;
2230
- height: 100%;
2231
- object-fit: cover;
2232
- }
2233
- .avatar--disabled.avatar {
2234
- opacity: var(--_op-avatar-disabled-opacity);
2235
- pointer-events: none;
2236
- }
2237
- .avatar:hover:not(div, .avatar--disabled) {
2238
- --_op-avatar-inner-border-color: var(--op-color-primary-base);
2239
- --_op-avatar-outer-border-color: var(--op-color-primary-plus-one);
2240
- cursor: pointer;
2241
- }
2242
- .avatar:hover:not(div, .avatar--disabled)::before {
2243
- background-color: var(--op-color-primary-base);
2244
- opacity: var(--_op-avatar-hover-opacity);
2245
- }
2246
- .avatar:focus, .avatar:focus-visible, .avatar:focus-within {
2247
- outline: none;
2248
- }
2249
- .avatar:focus-visible:not(.avatar--disabled) {
2250
- --_op-avatar-outer-border-color: var(--op-color-primary-base);
2251
- cursor: pointer;
2252
- }
2253
- .avatar--small.avatar {
2254
- --__op-avatar-size: var(--_op-avatar-size-small);
2255
- }
2256
- .avatar--medium.avatar {
2257
- --__op-avatar-size: var(--_op-avatar-size-medium);
2258
- }
2259
- .avatar--large.avatar {
2260
- --__op-avatar-size: var(--_op-avatar-size-large);
2219
+ &::before {
2220
+ position: absolute;
2221
+ z-index: 2;
2222
+ content: "";
2223
+ inset: 0;
2224
+ }
2225
+ &::after {
2226
+ position: absolute;
2227
+ z-index: 3;
2228
+ border-radius: var(--_op-avatar-border-radius);
2229
+ box-shadow: inset 0 0 0 var(--_op-avatar-outer-border-width) var(--_op-avatar-outer-border-color), inset 0 0 0 var(--_op-avatar-inner-border-width) var(--_op-avatar-inner-border-color);
2230
+ content: "";
2231
+ inset: 0;
2232
+ }
2233
+ img {
2234
+ width: 100%;
2235
+ height: 100%;
2236
+ object-fit: cover;
2237
+ }
2238
+ /* Disabled State */
2239
+ &.avatar--disabled {
2240
+ opacity: var(--_op-avatar-disabled-opacity);
2241
+ pointer-events: none;
2242
+ }
2243
+ /* Focus State */
2244
+ &:focus,
2245
+ &:focus-visible,
2246
+ &:focus-within {
2247
+ outline: none;
2248
+ }
2249
+ /* Hover State */
2250
+ &:hover:not(div, .avatar--disabled) {
2251
+ --_op-avatar-inner-border-color: var(--op-color-primary-base);
2252
+ --_op-avatar-outer-border-color: var(--op-color-primary-plus-one);
2253
+ cursor: pointer;
2254
+ &::before {
2255
+ background-color: var(--op-color-primary-base);
2256
+ opacity: var(--_op-avatar-hover-opacity);
2257
+ }
2258
+ }
2259
+ &:focus-visible:not(.avatar--disabled) {
2260
+ --_op-avatar-outer-border-color: var(--op-color-primary-base);
2261
+ cursor: pointer;
2262
+ }
2263
+ /* Size Modifiers */
2264
+ &.avatar--small {
2265
+ --__op-avatar-size: var(--_op-avatar-size-small);
2266
+ }
2267
+ &.avatar--medium {
2268
+ --__op-avatar-size: var(--_op-avatar-size-medium);
2269
+ }
2270
+ &.avatar--large {
2271
+ --__op-avatar-size: var(--_op-avatar-size-large);
2272
+ }
2261
2273
  }
2262
2274
 
2263
2275
  .badge-notice, .badge-info, .badge-danger, .badge-warning, .badge-primary, .badge {
@@ -2326,30 +2338,34 @@ small {
2326
2338
  }
2327
2339
 
2328
2340
  .breadcrumbs {
2341
+ /* Public API (customizable component options) */
2329
2342
  --_op-breadcrumbs-font-size-small: var(--op-font-x-small);
2330
2343
  --_op-breadcrumbs-font-size-large: var(--op-font-small);
2344
+ /* Private API (component option defaults) */
2331
2345
  --__op-breadcrumbs-font-size: var(--_op-breadcrumbs-font-size-small);
2332
2346
  display: flex;
2333
2347
  flex-wrap: wrap;
2334
2348
  align-items: baseline;
2335
2349
  gap: var(--op-space-x-small);
2336
- }
2337
- .breadcrumbs .breadcrumbs__link {
2338
- font-size: var(--__op-breadcrumbs-font-size);
2339
- text-decoration: none;
2340
- }
2341
- .breadcrumbs .breadcrumbs__link:hover {
2342
- text-decoration: underline;
2343
- }
2344
- .breadcrumbs .breadcrumbs__text {
2345
- font-size: var(--__op-breadcrumbs-font-size);
2346
- font-weight: var(--op-font-weight-bold);
2347
- }
2348
- .breadcrumbs--small.breadcrumbs {
2349
- --__op-breadcrumbs-font-size: var(--_op-breadcrumbs-font-size-small);
2350
- }
2351
- .breadcrumbs--large.breadcrumbs {
2352
- --__op-breadcrumbs-font-size: var(--_op-breadcrumbs-font-size-large);
2350
+ /* Elements */
2351
+ .breadcrumbs__link {
2352
+ font-size: var(--__op-breadcrumbs-font-size);
2353
+ text-decoration: none;
2354
+ &:hover {
2355
+ text-decoration: underline;
2356
+ }
2357
+ }
2358
+ .breadcrumbs__text {
2359
+ font-size: var(--__op-breadcrumbs-font-size);
2360
+ font-weight: var(--op-font-weight-bold);
2361
+ }
2362
+ /* Modifiers */
2363
+ &.breadcrumbs--small {
2364
+ --__op-breadcrumbs-font-size: var(--_op-breadcrumbs-font-size-small);
2365
+ }
2366
+ &.breadcrumbs--large {
2367
+ --__op-breadcrumbs-font-size: var(--_op-breadcrumbs-font-size-large);
2368
+ }
2353
2369
  }
2354
2370
 
2355
2371
  .btn-warning, .btn-destructive,
@@ -2803,7 +2819,8 @@ small {
2803
2819
  justify-content: space-between;
2804
2820
  }
2805
2821
 
2806
- .divider-vertical, .divider {
2822
+ .divider {
2823
+ /* Public API (customizable component options) */
2807
2824
  --_op-divider-vertical-min-height: var(--op-space-large);
2808
2825
  --_op-divider-height-small: var(--op-border-width);
2809
2826
  --_op-divider-height-medium: var(--op-border-width-large);
@@ -2811,40 +2828,42 @@ small {
2811
2828
  --_op-divider-padding-small: var(--op-space-2x-small);
2812
2829
  --_op-divider-padding-medium: var(--op-space-x-small);
2813
2830
  --_op-divider-padding-large: var(--op-space-medium);
2831
+ /* Private API (component option defaults) */
2814
2832
  --__op-divider-height: var(--_op-divider-height-small);
2815
2833
  --__op-divider-padding: 0;
2816
- background-color: var(--op-color-border);
2817
- }
2818
- .divider--small.divider-vertical, .divider--small.divider {
2819
- --__op-divider-height: var(--_op-divider-height-small);
2820
- }
2821
- .divider--medium.divider-vertical, .divider--medium.divider {
2822
- --__op-divider-height: var(--_op-divider-height-medium);
2823
- }
2824
- .divider--large.divider-vertical, .divider--large.divider {
2825
- --__op-divider-height: var(--_op-divider-height-large);
2826
- }
2827
- .divider--spacing-small.divider-vertical, .divider--spacing-small.divider {
2828
- --__op-divider-padding: var(--_op-divider-padding-small);
2829
- }
2830
- .divider--spacing-medium.divider-vertical, .divider--spacing-medium.divider {
2831
- --__op-divider-padding: var(--_op-divider-padding-medium);
2832
- }
2833
- .divider--spacing-large.divider-vertical, .divider--spacing-large.divider {
2834
- --__op-divider-padding: var(--_op-divider-padding-large);
2835
- }
2836
-
2837
- .divider {
2838
2834
  width: 100%;
2839
2835
  height: var(--__op-divider-height);
2840
- margin: var(--__op-divider-padding) 0;
2841
- }
2842
-
2843
- .divider-vertical {
2844
- width: var(--__op-divider-height);
2845
- height: 100%;
2846
- min-height: var(--_op-divider-vertical-min-height);
2847
- margin: 0 var(--__op-divider-padding);
2836
+ background-color: var(--op-color-border);
2837
+ margin-block: var(--__op-divider-padding);
2838
+ margin-inline: 0;
2839
+ /* Size Modifiers */
2840
+ &.divider--small {
2841
+ --__op-divider-height: var(--_op-divider-height-small);
2842
+ }
2843
+ &.divider--medium {
2844
+ --__op-divider-height: var(--_op-divider-height-medium);
2845
+ }
2846
+ &.divider--large {
2847
+ --__op-divider-height: var(--_op-divider-height-large);
2848
+ }
2849
+ /* Spacing Modifiers */
2850
+ &.divider--spacing-small {
2851
+ --__op-divider-padding: var(--_op-divider-padding-small);
2852
+ }
2853
+ &.divider--spacing-medium {
2854
+ --__op-divider-padding: var(--_op-divider-padding-medium);
2855
+ }
2856
+ &.divider--spacing-large {
2857
+ --__op-divider-padding: var(--_op-divider-padding-large);
2858
+ }
2859
+ /* Direction Modifier */
2860
+ &.divider--vertical {
2861
+ width: var(--__op-divider-height);
2862
+ height: 100%;
2863
+ min-height: var(--_op-divider-vertical-min-height);
2864
+ margin-block: 0;
2865
+ margin-inline: var(--__op-divider-padding);
2866
+ }
2848
2867
  }
2849
2868
 
2850
2869
  .form-control {
@@ -3391,19 +3410,21 @@ dialog.modal.modal--closing::backdrop {
3391
3410
  display: flex;
3392
3411
  align-items: center;
3393
3412
  gap: 0;
3394
- }
3395
- .pagination .form-group {
3396
- align-items: center;
3397
- }
3398
- .pagination .form-group .form-label {
3399
- grid-column: 1;
3400
- }
3401
- .pagination .form-group .form-control {
3402
- grid-column: 2;
3403
- }
3404
- .pagination .pagination__divider {
3405
- height: 100%;
3406
- padding: 0 var(--op-space-x-small);
3413
+ /* Showing Dropdown */
3414
+ .form-group {
3415
+ align-items: center;
3416
+ .form-label {
3417
+ grid-column: 1;
3418
+ }
3419
+ .form-control {
3420
+ grid-column: 2;
3421
+ }
3422
+ }
3423
+ /* ... Gap */
3424
+ .pagination__divider {
3425
+ height: 100%;
3426
+ padding-inline: var(--op-space-x-small);
3427
+ }
3407
3428
  }
3408
3429
 
3409
3430
  .sidebar-primary, .sidebar {
@@ -3564,7 +3585,8 @@ dialog.modal.modal--closing::backdrop {
3564
3585
  }
3565
3586
 
3566
3587
  .side-panel {
3567
- --_op-side-panel-width: calc(54 * var(--op-size-unit));
3588
+ /* Public API (customizable component options) */
3589
+ --_op-side-panel-width: calc(54 * var(--op-size-unit)); /* 216px */
3568
3590
  --_op-side-panel-header-padding: var(--op-space-medium);
3569
3591
  --_op-side-panel-body-padding: var(--op-space-medium);
3570
3592
  --_op-side-panel-footer-padding: var(--op-space-medium);
@@ -3577,70 +3599,80 @@ dialog.modal.modal--closing::backdrop {
3577
3599
  flex-direction: column;
3578
3600
  background-color: var(--op-color-background);
3579
3601
  color: var(--op-color-on-background);
3580
- }
3581
- .side-panel--border-left.side-panel {
3582
- box-shadow: var(--op-border-left) var(--op-color-border);
3583
- }
3584
- .side-panel--border-right.side-panel {
3585
- box-shadow: var(--op-border-right) var(--op-color-border);
3586
- }
3587
- .side-panel--border-left.side-panel--border-right.side-panel {
3588
- box-shadow: var(--op-border-x);
3589
- }
3590
- .side-panel .side-panel__header.side-panel__header--padded {
3591
- padding: var(--_op-side-panel-header-padding);
3592
- }
3593
- .side-panel .side-panel__header.side-panel__header--padded-x {
3594
- padding-inline: var(--_op-side-panel-header-padding);
3595
- }
3596
- .side-panel .side-panel__header.side-panel__header--padded-y {
3597
- padding-block: var(--_op-side-panel-header-padding);
3598
- }
3599
- .side-panel .side-panel__body {
3600
- flex: 1;
3601
- overflow-y: auto;
3602
- }
3603
- .side-panel .side-panel__body.side-panel__body--padded {
3604
- padding: var(--_op-side-panel-body-padding);
3605
- }
3606
- .side-panel .side-panel__body.side-panel__body--padded-x {
3607
- padding-inline: var(--_op-side-panel-body-padding);
3608
- }
3609
- .side-panel .side-panel__body.side-panel__body--padded-y {
3610
- padding-block: var(--_op-side-panel-body-padding);
3611
- }
3612
- .side-panel .side-panel__footer.side-panel__footer--padded {
3613
- padding: var(--_op-side-panel-footer-padding);
3614
- }
3615
- .side-panel .side-panel__footer.side-panel__footer--padded-x {
3616
- padding-inline: var(--_op-side-panel-footer-padding);
3617
- }
3618
- .side-panel .side-panel__footer.side-panel__footer--padded-y {
3619
- padding-block: var(--_op-side-panel-footer-padding);
3620
- }
3621
- .side-panel .side-panel__section.side-panel__section--padded {
3622
- padding: var(--_op-side-panel-section-padding);
3623
- }
3624
- .side-panel .side-panel__section.side-panel__section--padded-x {
3625
- padding-inline: var(--_op-side-panel-section-padding);
3626
- }
3627
- .side-panel .side-panel__section.side-panel__section--padded-y {
3628
- padding-block: var(--_op-side-panel-section-padding);
3602
+ /* Modifiers */
3603
+ &.side-panel--border-left {
3604
+ box-shadow: var(--op-border-left) var(--op-color-border);
3605
+ }
3606
+ &.side-panel--border-right {
3607
+ box-shadow: var(--op-border-right) var(--op-color-border);
3608
+ }
3609
+ &.side-panel--border-left.side-panel--border-right {
3610
+ box-shadow: var(--op-border-x);
3611
+ }
3612
+ /* Elements */
3613
+ .side-panel__header {
3614
+ &.side-panel__header--padded {
3615
+ padding: var(--_op-side-panel-header-padding);
3616
+ }
3617
+ &.side-panel__header--padded-x {
3618
+ padding-inline: var(--_op-side-panel-header-padding);
3619
+ }
3620
+ &.side-panel__header--padded-y {
3621
+ padding-block: var(--_op-side-panel-header-padding);
3622
+ }
3623
+ }
3624
+ .side-panel__body {
3625
+ flex: 1;
3626
+ overflow-y: auto;
3627
+ &.side-panel__body--padded {
3628
+ padding: var(--_op-side-panel-body-padding);
3629
+ }
3630
+ &.side-panel__body--padded-x {
3631
+ padding-inline: var(--_op-side-panel-body-padding);
3632
+ }
3633
+ &.side-panel__body--padded-y {
3634
+ padding-block: var(--_op-side-panel-body-padding);
3635
+ }
3636
+ }
3637
+ .side-panel__footer {
3638
+ &.side-panel__footer--padded {
3639
+ padding: var(--_op-side-panel-footer-padding);
3640
+ }
3641
+ &.side-panel__footer--padded-x {
3642
+ padding-inline: var(--_op-side-panel-footer-padding);
3643
+ }
3644
+ &.side-panel__footer--padded-y {
3645
+ padding-block: var(--_op-side-panel-footer-padding);
3646
+ }
3647
+ }
3648
+ .side-panel__section {
3649
+ &.side-panel__section--padded {
3650
+ padding: var(--_op-side-panel-section-padding);
3651
+ }
3652
+ &.side-panel__section--padded-x {
3653
+ padding-inline: var(--_op-side-panel-section-padding);
3654
+ }
3655
+ &.side-panel__section--padded-y {
3656
+ padding-block: var(--_op-side-panel-section-padding);
3657
+ }
3658
+ }
3629
3659
  }
3630
3660
 
3631
3661
  .spinner {
3662
+ /* Public API (customizable component options) */
3632
3663
  --_op-spinner-indicator-color: var(--op-color-primary-base);
3633
3664
  --_op-spinner-track-color: var(--op-color-neutral-plus-four);
3634
3665
  --_op-spinner-track-width-x-small: var(--op-border-width);
3635
3666
  --_op-spinner-track-width-small: var(--op-border-width-large);
3636
3667
  --_op-spinner-track-width-medium: calc(var(--op-border-width-large) + var(--op-border-width));
3637
3668
  --_op-spinner-track-width-large: var(--op-border-width-x-large);
3638
- --_op-spinner-diameter-x-small: calc(6 * var(--op-size-unit));
3639
- --_op-spinner-diameter-small: calc(10 * var(--op-size-unit));
3640
- --_op-spinner-diameter-medium: calc(15 * var(--op-size-unit));
3641
- --_op-spinner-diameter-large: calc(20 * var(--op-size-unit));
3669
+ --_op-spinner-diameter-x-small: calc(6 * var(--op-size-unit)); /* 24px */
3670
+ --_op-spinner-diameter-small: calc(10 * var(--op-size-unit)); /* 40px */
3671
+ --_op-spinner-diameter-medium: calc(15 * var(--op-size-unit)); /* 60px */
3672
+ --_op-spinner-diameter-large: calc(20 * var(--op-size-unit)); /* 80px */
3642
3673
  --_op-spinner-animation-duration: 0.8s;
3643
3674
  --_op-spinner-animation-timing-function: linear;
3675
+ /* Private API (component option defaults) */
3644
3676
  --__op-spinner-diameter: var(--_op-spinner-diameter-large);
3645
3677
  --__op-spinner-track-width: var(--_op-spinner-track-width-large);
3646
3678
  width: var(--__op-spinner-diameter);
@@ -3649,22 +3681,22 @@ dialog.modal.modal--closing::backdrop {
3649
3681
  border-radius: var(--__op-spinner-diameter);
3650
3682
  border-top-color: var(--_op-spinner-indicator-color);
3651
3683
  animation: spinner var(--_op-spinner-animation-duration) var(--_op-spinner-animation-timing-function) infinite;
3652
- }
3653
- .spinner--x-small.spinner {
3654
- --__op-spinner-diameter: var(--_op-spinner-diameter-x-small);
3655
- --__op-spinner-track-width: var(--_op-spinner-track-width-x-small);
3656
- }
3657
- .spinner--small.spinner {
3658
- --__op-spinner-diameter: var(--_op-spinner-diameter-small);
3659
- --__op-spinner-track-width: var(--_op-spinner-track-width-small);
3660
- }
3661
- .spinner--medium.spinner {
3662
- --__op-spinner-diameter: var(--_op-spinner-diameter-medium);
3663
- --__op-spinner-track-width: var(--_op-spinner-track-width-medium);
3664
- }
3665
- .spinner--large.spinner {
3666
- --__op-spinner-diameter: var(--_op-spinner-diameter-large);
3667
- --__op-spinner-track-width: var(--_op-spinner-track-width-large);
3684
+ &.spinner--x-small {
3685
+ --__op-spinner-diameter: var(--_op-spinner-diameter-x-small);
3686
+ --__op-spinner-track-width: var(--_op-spinner-track-width-x-small);
3687
+ }
3688
+ &.spinner--small {
3689
+ --__op-spinner-diameter: var(--_op-spinner-diameter-small);
3690
+ --__op-spinner-track-width: var(--_op-spinner-track-width-small);
3691
+ }
3692
+ &.spinner--medium {
3693
+ --__op-spinner-diameter: var(--_op-spinner-diameter-medium);
3694
+ --__op-spinner-track-width: var(--_op-spinner-track-width-medium);
3695
+ }
3696
+ &.spinner--large {
3697
+ --__op-spinner-diameter: var(--_op-spinner-diameter-large);
3698
+ --__op-spinner-track-width: var(--_op-spinner-track-width-large);
3699
+ }
3668
3700
  }
3669
3701
 
3670
3702
  @keyframes spinner {
@@ -3673,12 +3705,14 @@ dialog.modal.modal--closing::backdrop {
3673
3705
  }
3674
3706
  }
3675
3707
  .switch {
3676
- --_op-switch-height-small: calc(4 * var(--op-size-unit));
3677
- --_op-switch-height-large: calc(6 * var(--op-size-unit));
3678
- --_op-switch-width-small: calc(7 * var(--op-size-unit));
3679
- --_op-switch-width-large: calc(11 * var(--op-size-unit));
3708
+ /* Public API (allowed to be overridden) */
3709
+ --_op-switch-height-small: calc(4 * var(--op-size-unit)); /* 16px */
3710
+ --_op-switch-height-large: calc(6 * var(--op-size-unit)); /* 24px */
3711
+ --_op-switch-width-small: calc(7 * var(--op-size-unit)); /* 28px */
3712
+ --_op-switch-width-large: calc(11 * var(--op-size-unit)); /* 44px */
3680
3713
  --_op-switch-opacity-disabled: var(--op-opacity-disabled);
3681
3714
  --_op-switch-switch-padding: var(--op-space-2x-small);
3715
+ /* Private API (don't touch these) */
3682
3716
  --__op-switch-width: var(--_op-switch-width-large);
3683
3717
  --__op-switch-height: var(--_op-switch-height-large);
3684
3718
  --__op-switch-switch-size: calc(var(--__op-switch-height) - var(--_op-switch-switch-padding));
@@ -3686,72 +3720,78 @@ dialog.modal.modal--closing::backdrop {
3686
3720
  position: relative;
3687
3721
  display: flex;
3688
3722
  align-items: center;
3689
- }
3690
- .switch input {
3691
- width: 0;
3692
- height: 0;
3693
- margin-right: calc(-1 * var(--op-space-x-small));
3694
- }
3695
- .switch input:disabled {
3696
- visibility: hidden;
3697
- }
3698
- .switch input:disabled + label {
3699
- cursor: not-allowed;
3700
- opacity: var(--_op-switch-opacity-disabled);
3701
- }
3702
- .switch input:checked + label {
3703
- background-color: var(--op-color-primary-base);
3704
- box-shadow: none;
3705
- }
3706
- .switch input:checked + label::after {
3707
- left: calc(100% - var(--__op-switch-half-switch-padding));
3708
- transform: translateX(-100%);
3709
- }
3710
- .switch input:hover + label::after {
3711
- background-color: var(--op-color-primary-plus-five);
3712
- }
3713
- .switch input:focus-visible + label {
3714
- box-shadow: 0 0 0 var(--op-border-width-large) var(--op-color-primary-plus-six), inset var(--op-border-all) var(--op-color-primary-minus-three);
3715
- }
3716
- .switch input:focus-visible + label::after {
3717
- background-color: var(--op-color-neutral-plus-five);
3718
- box-shadow: var(--op-border-all) var(--op-color-primary-minus-three);
3719
- }
3720
- .switch input:focus-visible:checked + label::after {
3721
- background-color: var(--op-color-primary-plus-six);
3722
- box-shadow: var(--op-border-all) var(--op-color-primary-minus-two);
3723
- }
3724
- .switch label {
3725
- position: relative;
3726
- display: block;
3727
- width: var(--__op-switch-width);
3728
- height: var(--__op-switch-height);
3729
- border-radius: var(--op-radius-pill);
3730
- background: var(--op-color-neutral-base);
3731
- box-shadow: inset var(--op-border-all) var(--op-color-neutral-plus-three);
3732
- text-indent: -9999px;
3733
- }
3734
- .switch label::after {
3735
- position: absolute;
3736
- top: var(--__op-switch-half-switch-padding);
3737
- left: var(--__op-switch-half-switch-padding);
3738
- width: var(--__op-switch-switch-size);
3739
- height: var(--__op-switch-switch-size);
3740
- border-radius: var(--op-radius-circle);
3741
- background-color: var(--op-color-neutral-plus-eight);
3742
- content: "";
3743
- transition: var(--op-transition-input);
3744
- }
3745
- .switch--small.switch {
3746
- --__op-switch-width: var(--_op-switch-width-small);
3747
- --__op-switch-height: var(--_op-switch-height-small);
3748
- }
3749
- .switch--large.switch {
3750
- --__op-switch-width: var(--_op-switch-width-large);
3751
- --__op-switch-height: var(--_op-switch-height-large);
3752
- }
3753
- .switch + label {
3754
- width: fit-content;
3723
+ label {
3724
+ position: relative;
3725
+ display: block;
3726
+ width: var(--__op-switch-width);
3727
+ height: var(--__op-switch-height);
3728
+ border-radius: var(--op-radius-pill);
3729
+ background: var(--op-color-neutral-base);
3730
+ box-shadow: inset var(--op-border-all) var(--op-color-neutral-plus-three);
3731
+ text-indent: -9999px; /* Normally text would not be put in the label, but this hides it in case you do put text in the label */
3732
+ &::after {
3733
+ position: absolute;
3734
+ width: var(--__op-switch-switch-size);
3735
+ height: var(--__op-switch-switch-size);
3736
+ border-radius: var(--op-radius-circle);
3737
+ background-color: var(--op-color-neutral-plus-eight);
3738
+ content: "";
3739
+ inset-block-start: var(--__op-switch-half-switch-padding);
3740
+ inset-inline-start: var(--__op-switch-half-switch-padding);
3741
+ transition: var(--op-transition-input);
3742
+ }
3743
+ }
3744
+ /* Prevent labels after the toggle being full width */
3745
+ & + label {
3746
+ width: fit-content;
3747
+ }
3748
+ input {
3749
+ width: 0;
3750
+ height: 0;
3751
+ margin-inline-end: calc(-1 * var(--op-space-x-small));
3752
+ &:disabled {
3753
+ visibility: hidden;
3754
+ }
3755
+ &:disabled + label {
3756
+ cursor: not-allowed;
3757
+ opacity: var(--_op-switch-opacity-disabled);
3758
+ }
3759
+ &:checked + label {
3760
+ background-color: var(--op-color-primary-base);
3761
+ box-shadow: none;
3762
+ &::after {
3763
+ left: calc(100% - var(--__op-switch-half-switch-padding));
3764
+ transform: translateX(-100%);
3765
+ }
3766
+ }
3767
+ &:hover + label {
3768
+ &::after {
3769
+ background-color: var(--op-color-primary-plus-five);
3770
+ }
3771
+ }
3772
+ &:focus-visible + label {
3773
+ box-shadow: 0 0 0 var(--op-border-width-large) var(--op-color-primary-plus-six), inset var(--op-border-all) var(--op-color-primary-minus-three);
3774
+ &::after {
3775
+ background-color: var(--op-color-neutral-plus-five);
3776
+ box-shadow: var(--op-border-all) var(--op-color-primary-minus-three);
3777
+ }
3778
+ }
3779
+ &:focus-visible:checked + label {
3780
+ &::after {
3781
+ background-color: var(--op-color-primary-plus-six);
3782
+ box-shadow: var(--op-border-all) var(--op-color-primary-minus-two);
3783
+ }
3784
+ }
3785
+ }
3786
+ /* Size Modifiers */
3787
+ &.switch--small {
3788
+ --__op-switch-width: var(--_op-switch-width-small);
3789
+ --__op-switch-height: var(--_op-switch-height-small);
3790
+ }
3791
+ &.switch--large {
3792
+ --__op-switch-width: var(--_op-switch-width-large);
3793
+ --__op-switch-height: var(--_op-switch-height-large);
3794
+ }
3755
3795
  }
3756
3796
 
3757
3797
  .tab-group {
@@ -3760,6 +3800,7 @@ dialog.modal.modal--closing::backdrop {
3760
3800
  }
3761
3801
 
3762
3802
  .tab {
3803
+ /* Public API */
3763
3804
  --_op-tab-font-small: var(--op-font-x-small);
3764
3805
  --_op-tab-font-large: var(--op-font-small);
3765
3806
  --_op-tab-padding-small: calc(var(--op-space-2x-small) + var(--op-space-3x-small)) var(--op-space-medium);
@@ -3767,6 +3808,7 @@ dialog.modal.modal--closing::backdrop {
3767
3808
  --_op-tab-indicator-width-small: var(--op-border-width-large);
3768
3809
  --_op-tab-indicator-width-large: var(--op-border-width-x-large);
3769
3810
  --_op-tab-disabled-opacity: var(--op-opacity-disabled);
3811
+ /* Private API */
3770
3812
  --__op-tab-font-size: var(--_op-tab-font-large);
3771
3813
  --__op-tab-padding: var(--_op-tab-padding-large);
3772
3814
  --__op-tab-indicator-width: var(--_op-tab-indicator-width-large);
@@ -3776,38 +3818,45 @@ dialog.modal.modal--closing::backdrop {
3776
3818
  color: var(--op-color-on-background);
3777
3819
  font-size: var(--__op-tab-font-size);
3778
3820
  text-decoration: none;
3779
- }
3780
- .tab--active.tab {
3781
- box-shadow: var(--__op-tab-indicator) var(--op-color-primary-plus-one);
3782
- }
3783
- .tab:focus, .tab:focus-within, .tab:focus-visible {
3784
- outline: none;
3785
- }
3786
- .tab:focus-visible:not(.tab--disabled) {
3787
- z-index: 1;
3788
- box-shadow: var(--op-input-focus-primary);
3789
- }
3790
- .tab:focus-visible:not(.tab--disabled).tab--active {
3791
- box-shadow: var(--__op-tab-indicator) var(--op-color-primary-plus-one), var(--op-input-focus-primary);
3792
- }
3793
- .tab--disabled.tab {
3794
- opacity: var(--_op-tab-disabled-opacity);
3795
- pointer-events: none;
3796
- }
3797
- .tab:hover {
3798
- background-color: var(--op-color-primary-plus-seven);
3799
- box-shadow: var(--__op-tab-indicator) var(--op-color-primary-base);
3800
- color: var(--op-color-primary-on-plus-seven);
3801
- }
3802
- .tab--small.tab {
3803
- --__op-tab-padding: var(--_op-tab-padding-small);
3804
- --__op-tab-font-size: var(--_op-tab-font-small);
3805
- --__op-tab-indicator-width: var(--_op-tab-indicator-width-small);
3806
- }
3807
- .tab--large.tab {
3808
- --__op-tab-padding: var(--_op-tab-padding-large);
3809
- --__op-tab-font-size: var(--_op-tab-font-large);
3810
- --__op-tab-indicator-width: var(--_op-tab-indicator-width-large);
3821
+ &.tab--active {
3822
+ box-shadow: var(--__op-tab-indicator) var(--op-color-primary-plus-one);
3823
+ }
3824
+ /* Focus State */
3825
+ &:focus,
3826
+ &:focus-within,
3827
+ &:focus-visible {
3828
+ outline: none;
3829
+ }
3830
+ /* Hover State */
3831
+ &:hover {
3832
+ background-color: var(--op-color-primary-plus-seven);
3833
+ box-shadow: var(--__op-tab-indicator) var(--op-color-primary-base);
3834
+ color: var(--op-color-primary-on-plus-seven);
3835
+ }
3836
+ /* Focus State */
3837
+ &:focus-visible:not(.tab--disabled) {
3838
+ z-index: 1;
3839
+ box-shadow: var(--op-input-focus-primary);
3840
+ &.tab--active {
3841
+ box-shadow: var(--__op-tab-indicator) var(--op-color-primary-plus-one), var(--op-input-focus-primary);
3842
+ }
3843
+ }
3844
+ /* Disabled State */
3845
+ &.tab--disabled {
3846
+ opacity: var(--_op-tab-disabled-opacity);
3847
+ pointer-events: none;
3848
+ }
3849
+ /* Size Modifiers */
3850
+ &.tab--small {
3851
+ --__op-tab-padding: var(--_op-tab-padding-small);
3852
+ --__op-tab-font-size: var(--_op-tab-font-small);
3853
+ --__op-tab-indicator-width: var(--_op-tab-indicator-width-small);
3854
+ }
3855
+ &.tab--large {
3856
+ --__op-tab-padding: var(--_op-tab-padding-large);
3857
+ --__op-tab-font-size: var(--_op-tab-font-large);
3858
+ --__op-tab-indicator-width: var(--_op-tab-indicator-width-large);
3859
+ }
3811
3860
  }
3812
3861
 
3813
3862
  .table-container, .table-danger, .table-primary, .table {
@@ -4035,50 +4084,54 @@ dialog.modal.modal--closing::backdrop {
4035
4084
  }
4036
4085
 
4037
4086
  .text-pair {
4087
+ /* Public API (customizable component options) */
4038
4088
  --_op-text-pair-font-size-small: var(--op-font-small);
4039
4089
  --_op-text-pair-font-size-medium: var(--op-font-medium);
4040
4090
  --_op-text-pair-font-size-large: var(--op-font-large);
4091
+ /* Private API (component option defaults) */
4041
4092
  --__op-text-pair-title-font-size: var(--_op-text-pair-font-size-medium);
4042
4093
  --__op-text-pair-subtitle-font-size: var(--_op-text-pair-font-size-small);
4043
4094
  display: flex;
4044
4095
  flex-direction: column;
4045
4096
  gap: var(--op-space-x-small);
4046
- }
4047
- .text-pair--inline.text-pair {
4048
- flex-direction: row;
4049
- align-items: baseline;
4050
- }
4051
- .text-pair .text-pair__title {
4052
- font-size: var(--__op-text-pair-title-font-size);
4053
- font-weight: var(--op-font-weight-semi-bold);
4054
- line-height: var(--op-line-height-dense);
4055
- }
4056
- .text-pair .text-pair__title.text-pair__title--small {
4057
- --__op-text-pair-title-font-size: var(--_op-text-pair-font-size-small);
4058
- }
4059
- .text-pair .text-pair__title.text-pair__title--medium {
4060
- --__op-text-pair-title-font-size: var(--_op-text-pair-font-size-medium);
4061
- }
4062
- .text-pair .text-pair__title.text-pair__title--large {
4063
- --__op-text-pair-title-font-size: var(--_op-text-pair-font-size-large);
4064
- }
4065
- .text-pair .text-pair__subtitle {
4066
- font-size: var(--__op-text-pair-subtitle-font-size);
4067
- font-weight: var(--op-font-weight-normal);
4068
- line-height: var(--op-line-height-dense);
4069
- }
4070
- .text-pair .text-pair__subtitle.text-pair__subtitle--small {
4071
- --__op-text-pair-subtitle-font-size: var(--_op-text-pair-font-size-small);
4072
- }
4073
- .text-pair .text-pair__subtitle.text-pair__subtitle--medium {
4074
- --__op-text-pair-subtitle-font-size: var(--_op-text-pair-font-size-medium);
4075
- }
4076
- .text-pair .text-pair__subtitle.text-pair__subtitle--large {
4077
- --__op-text-pair-subtitle-font-size: var(--_op-text-pair-font-size-large);
4097
+ &.text-pair--inline {
4098
+ flex-direction: row;
4099
+ align-items: baseline;
4100
+ }
4101
+ .text-pair__title {
4102
+ font-size: var(--__op-text-pair-title-font-size);
4103
+ font-weight: var(--op-font-weight-semi-bold);
4104
+ line-height: var(--op-line-height-dense);
4105
+ &.text-pair__title--small {
4106
+ --__op-text-pair-title-font-size: var(--_op-text-pair-font-size-small);
4107
+ }
4108
+ &.text-pair__title--medium {
4109
+ --__op-text-pair-title-font-size: var(--_op-text-pair-font-size-medium);
4110
+ }
4111
+ &.text-pair__title--large {
4112
+ --__op-text-pair-title-font-size: var(--_op-text-pair-font-size-large);
4113
+ }
4114
+ }
4115
+ .text-pair__subtitle {
4116
+ font-size: var(--__op-text-pair-subtitle-font-size);
4117
+ font-weight: var(--op-font-weight-normal);
4118
+ line-height: var(--op-line-height-dense);
4119
+ &.text-pair__subtitle--small {
4120
+ --__op-text-pair-subtitle-font-size: var(--_op-text-pair-font-size-small);
4121
+ }
4122
+ &.text-pair__subtitle--medium {
4123
+ --__op-text-pair-subtitle-font-size: var(--_op-text-pair-font-size-medium);
4124
+ }
4125
+ &.text-pair__subtitle--large {
4126
+ --__op-text-pair-subtitle-font-size: var(--_op-text-pair-font-size-large);
4127
+ }
4128
+ }
4078
4129
  }
4079
4130
 
4131
+ /* Inspired by https://blog.logrocket.com/creating-beautiful-tooltips-with-only-css/ */
4080
4132
  [data-tooltip-text] {
4081
- --_op-tooltip-max-width: calc(50 * var(--op-size-unit));
4133
+ /* Public API (customizable component options) */
4134
+ --_op-tooltip-max-width: calc(50 * var(--op-size-unit)); /* 200px */
4082
4135
  --_op-tooltip-padding: var(--op-space-x-small) var(--op-space-medium);
4083
4136
  --_op-tooltip-background-color: var(--op-color-neutral-minus-max);
4084
4137
  --_op-tooltip-text-color: var(--op-color-neutral-on-minus-max);
@@ -4087,92 +4140,109 @@ dialog.modal.modal--closing::backdrop {
4087
4140
  --_op-tooltip-tooltip-radius: var(--op-radius-medium);
4088
4141
  --_op-tooltip-tooltip-font-size: var(--op-font-small);
4089
4142
  position: relative;
4090
- }
4091
- [data-tooltip-text]::before, [data-tooltip-text]::after {
4092
- opacity: var(--op-opacity-none);
4093
- transition: var(--op-transition-tooltip);
4094
- visibility: hidden;
4095
- }
4096
- [data-tooltip-text]::before {
4097
- position: absolute;
4098
- z-index: var(--op-z-index-tooltip);
4099
- display: block;
4100
- width: max-content;
4101
- max-width: var(--_op-tooltip-max-width);
4102
- padding: var(--_op-tooltip-padding);
4103
- border-radius: var(--_op-tooltip-tooltip-radius);
4104
- background-color: var(--_op-tooltip-background-color);
4105
- color: var(--_op-tooltip-text-color);
4106
- content: attr(data-tooltip-text);
4107
- font-family: var(--op-font-family);
4108
- font-size: var(--_op-tooltip-tooltip-font-size);
4109
- overflow-wrap: break-word;
4110
- pointer-events: none;
4111
- text-align: center;
4112
- white-space: normal;
4113
- }
4114
- [data-tooltip-text]::after {
4115
- position: absolute;
4116
- z-index: var(--op-z-index-tooltip);
4117
- border: var(--_op-tooltip-arrow-size) solid var(--_op-tooltip-background-color);
4118
- content: "";
4119
- pointer-events: none;
4120
- }
4121
- [data-tooltip-text]:hover::before, [data-tooltip-text]:hover::after {
4122
- opacity: var(--op-opacity-full);
4123
- visibility: visible;
4124
- }
4125
- [data-tooltip-position=top][data-tooltip-text]::before, [data-tooltip-position=top][data-tooltip-text]::after, [data-tooltip-text]:not([data-tooltip-position])::before, [data-tooltip-text]:not([data-tooltip-position])::after {
4126
- left: 50%;
4127
- transform: translateX(-50%);
4128
- }
4129
- [data-tooltip-position=top][data-tooltip-text]::before, [data-tooltip-text]:not([data-tooltip-position])::before {
4130
- bottom: 100%;
4131
- margin-bottom: calc(var(--_op-tooltip-arrow-size) + var(--_op-tooltip-tooltip-offset));
4132
- }
4133
- [data-tooltip-position=top][data-tooltip-text]::after, [data-tooltip-text]:not([data-tooltip-position])::after {
4134
- bottom: 100%;
4135
- border-color: var(--_op-tooltip-background-color) transparent transparent transparent;
4136
- margin-bottom: calc(-1 * var(--_op-tooltip-arrow-size) + var(--_op-tooltip-tooltip-offset));
4137
- }
4138
- [data-tooltip-position=left][data-tooltip-text]::before, [data-tooltip-position=left][data-tooltip-text]::after {
4139
- top: 50%;
4140
- transform: translateY(-50%);
4141
- }
4142
- [data-tooltip-position=left][data-tooltip-text]::before {
4143
- right: 100%;
4144
- margin-right: calc(var(--_op-tooltip-arrow-size) + var(--_op-tooltip-tooltip-offset));
4145
- }
4146
- [data-tooltip-position=left][data-tooltip-text]::after {
4147
- right: 100%;
4148
- border-color: transparent transparent transparent var(--_op-tooltip-background-color);
4149
- margin-right: calc(-1 * var(--_op-tooltip-arrow-size) + var(--_op-tooltip-tooltip-offset));
4150
- }
4151
- [data-tooltip-position=bottom][data-tooltip-text]::before, [data-tooltip-position=bottom][data-tooltip-text]::after {
4152
- left: 50%;
4153
- transform: translateX(-50%);
4154
- }
4155
- [data-tooltip-position=bottom][data-tooltip-text]::before {
4156
- top: 100%;
4157
- margin-top: calc(var(--_op-tooltip-arrow-size) + var(--_op-tooltip-tooltip-offset));
4158
- }
4159
- [data-tooltip-position=bottom][data-tooltip-text]::after {
4160
- top: 100%;
4161
- border-color: transparent transparent var(--_op-tooltip-background-color) transparent;
4162
- margin-top: calc(-1 * var(--_op-tooltip-arrow-size) + var(--_op-tooltip-tooltip-offset));
4163
- }
4164
- [data-tooltip-position=right][data-tooltip-text]::before, [data-tooltip-position=right][data-tooltip-text]::after {
4165
- top: 50%;
4166
- transform: translateY(-50%);
4167
- }
4168
- [data-tooltip-position=right][data-tooltip-text]::before {
4169
- left: 100%;
4170
- margin-left: calc(var(--_op-tooltip-arrow-size) + var(--_op-tooltip-tooltip-offset));
4171
- }
4172
- [data-tooltip-position=right][data-tooltip-text]::after {
4173
- left: 100%;
4174
- border-color: transparent var(--_op-tooltip-background-color) transparent transparent;
4175
- margin-left: calc(-1 * var(--_op-tooltip-arrow-size) + var(--_op-tooltip-tooltip-offset));
4143
+ &::before,
4144
+ &::after {
4145
+ opacity: var(--op-opacity-none);
4146
+ transition: var(--op-transition-tooltip);
4147
+ visibility: hidden;
4148
+ }
4149
+ &::before {
4150
+ position: absolute;
4151
+ z-index: var(--op-z-index-tooltip);
4152
+ display: block;
4153
+ width: max-content;
4154
+ max-width: var(--_op-tooltip-max-width);
4155
+ padding: var(--_op-tooltip-padding);
4156
+ border-radius: var(--_op-tooltip-tooltip-radius);
4157
+ background-color: var(--_op-tooltip-background-color);
4158
+ color: var(--_op-tooltip-text-color);
4159
+ content: attr(data-tooltip-text);
4160
+ font-family: var(--op-font-family); /* Makes tooltips on icons work */
4161
+ font-size: var(--_op-tooltip-tooltip-font-size);
4162
+ overflow-wrap: break-word;
4163
+ pointer-events: none;
4164
+ text-align: center;
4165
+ white-space: normal;
4166
+ }
4167
+ &::after {
4168
+ position: absolute;
4169
+ z-index: var(--op-z-index-tooltip);
4170
+ border: var(--_op-tooltip-arrow-size) solid var(--_op-tooltip-background-color);
4171
+ content: "";
4172
+ pointer-events: none;
4173
+ }
4174
+ &:hover {
4175
+ &::before,
4176
+ &::after {
4177
+ opacity: var(--op-opacity-full);
4178
+ visibility: visible;
4179
+ }
4180
+ }
4181
+ &[data-tooltip-position=top],
4182
+ &:not([data-tooltip-position]) {
4183
+ &::before,
4184
+ &::after {
4185
+ inset-inline-start: 50%;
4186
+ transform: translateX(-50%);
4187
+ }
4188
+ &::before {
4189
+ inset-block-end: 100%;
4190
+ margin-block-end: calc(var(--_op-tooltip-arrow-size) + var(--_op-tooltip-tooltip-offset));
4191
+ }
4192
+ &::after {
4193
+ border-color: var(--_op-tooltip-background-color) transparent transparent transparent;
4194
+ inset-block-end: 100%;
4195
+ margin-block-end: calc(-1 * var(--_op-tooltip-arrow-size) + var(--_op-tooltip-tooltip-offset));
4196
+ }
4197
+ }
4198
+ &[data-tooltip-position=left] {
4199
+ &::before,
4200
+ &::after {
4201
+ inset-block-start: 50%;
4202
+ transform: translateY(-50%);
4203
+ }
4204
+ &::before {
4205
+ inset-inline-end: 100%;
4206
+ margin-inline-end: calc(var(--_op-tooltip-arrow-size) + var(--_op-tooltip-tooltip-offset));
4207
+ }
4208
+ &::after {
4209
+ border-color: transparent transparent transparent var(--_op-tooltip-background-color);
4210
+ inset-inline-end: 100%;
4211
+ margin-inline-end: calc(-1 * var(--_op-tooltip-arrow-size) + var(--_op-tooltip-tooltip-offset));
4212
+ }
4213
+ }
4214
+ &[data-tooltip-position=bottom] {
4215
+ &::before,
4216
+ &::after {
4217
+ inset-inline-start: 50%;
4218
+ transform: translateX(-50%);
4219
+ }
4220
+ &::before {
4221
+ inset-block-start: 100%;
4222
+ margin-block-start: calc(var(--_op-tooltip-arrow-size) + var(--_op-tooltip-tooltip-offset));
4223
+ }
4224
+ &::after {
4225
+ border-color: transparent transparent var(--_op-tooltip-background-color) transparent;
4226
+ inset-block-start: 100%;
4227
+ margin-block-start: calc(-1 * var(--_op-tooltip-arrow-size) + var(--_op-tooltip-tooltip-offset));
4228
+ }
4229
+ }
4230
+ &[data-tooltip-position=right] {
4231
+ &::before,
4232
+ &::after {
4233
+ inset-block-start: 50%;
4234
+ transform: translateY(-50%);
4235
+ }
4236
+ &::before {
4237
+ inset-inline-start: 100%;
4238
+ margin-inline-start: calc(var(--_op-tooltip-arrow-size) + var(--_op-tooltip-tooltip-offset));
4239
+ }
4240
+ &::after {
4241
+ border-color: transparent var(--_op-tooltip-background-color) transparent transparent;
4242
+ inset-inline-start: 100%;
4243
+ margin-inline-start: calc(-1 * var(--_op-tooltip-arrow-size) + var(--_op-tooltip-tooltip-offset));
4244
+ }
4245
+ }
4176
4246
  }
4177
4247
 
4178
4248
  /*# sourceMappingURL=optics.css.map */