@konce-pt/styles 0.9.1 → 0.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.
package/components.css CHANGED
@@ -974,6 +974,17 @@
974
974
  .kpt-autocomplete-host {
975
975
  display: block;
976
976
  }
977
+ .kpt-autocomplete__live {
978
+ position: absolute;
979
+ width: 1px;
980
+ height: 1px;
981
+ margin: -1px;
982
+ padding: 0;
983
+ overflow: hidden;
984
+ clip-path: inset(50%);
985
+ white-space: nowrap;
986
+ border: 0;
987
+ }
977
988
  .kpt-autocomplete__input {
978
989
  display: block;
979
990
  width: 100%;
@@ -1087,7 +1098,7 @@
1087
1098
  box-shadow: 0 0 0 2px var(--kpt-color-surface);
1088
1099
  }
1089
1100
  .kpt-avatar-group__item:not(:first-child) {
1090
- margin-left: -0.6rem;
1101
+ margin-inline-start: -0.6rem;
1091
1102
  }
1092
1103
  .kpt-avatar-group__more {
1093
1104
  align-items: center;
@@ -1110,8 +1121,8 @@
1110
1121
  height: 3rem;
1111
1122
  }
1112
1123
  .kpt-avatar-group__more[data-size=xl] {
1113
- width: 3.5rem;
1114
- height: 3.5rem;
1124
+ width: 4rem;
1125
+ height: 4rem;
1115
1126
  }
1116
1127
  }
1117
1128
 
@@ -1193,19 +1204,19 @@
1193
1204
  }
1194
1205
  .kpt-badge[data-variant=success] {
1195
1206
  --_bg: var(--kpt-color-success);
1196
- --_fg: var(--kpt-color-surface);
1207
+ --_fg: var(--kpt-color-success-contrast);
1197
1208
  }
1198
1209
  .kpt-badge[data-variant=danger] {
1199
1210
  --_bg: var(--kpt-color-danger);
1200
- --_fg: var(--kpt-color-on-danger);
1211
+ --_fg: var(--kpt-color-danger-contrast);
1201
1212
  }
1202
1213
  .kpt-badge[data-variant=warning] {
1203
1214
  --_bg: var(--kpt-color-warning);
1204
- --_fg: var(--kpt-color-surface);
1215
+ --_fg: var(--kpt-color-warning-contrast);
1205
1216
  }
1206
1217
  .kpt-badge[data-variant=info] {
1207
1218
  --_bg: var(--kpt-color-info);
1208
- --_fg: var(--kpt-color-surface);
1219
+ --_fg: var(--kpt-color-info-contrast);
1209
1220
  }
1210
1221
  .kpt-badge--dot {
1211
1222
  min-width: 0;
@@ -1220,6 +1231,17 @@
1220
1231
  transform: translate(35%, -35%);
1221
1232
  box-shadow: 0 0 0 2px var(--kpt-color-surface);
1222
1233
  }
1234
+ .kpt-badge__label {
1235
+ position: absolute;
1236
+ width: 1px;
1237
+ height: 1px;
1238
+ margin: -1px;
1239
+ padding: 0;
1240
+ overflow: hidden;
1241
+ clip-path: inset(50%);
1242
+ white-space: nowrap;
1243
+ border: 0;
1244
+ }
1223
1245
  }
1224
1246
 
1225
1247
  /* src/lib/bottom-sheet/bottom-sheet.component.scss */
@@ -1231,7 +1253,7 @@
1231
1253
  position: fixed;
1232
1254
  inset: 0;
1233
1255
  z-index: var(--kpt-z-overlay, 1000);
1234
- background: color-mix(in oklch, black 45%, transparent);
1256
+ background: var(--kpt-color-overlay-scrim);
1235
1257
  opacity: 0;
1236
1258
  visibility: hidden;
1237
1259
  transition: opacity 0.2s, visibility 0.2s;
@@ -1294,11 +1316,21 @@
1294
1316
  display: block;
1295
1317
  }
1296
1318
  .kpt-breadcrumb {
1319
+ font-size: var(--kpt-font-size-sm, 0.875rem);
1320
+ }
1321
+ .kpt-breadcrumb__list {
1297
1322
  display: flex;
1298
1323
  flex-wrap: wrap;
1299
1324
  align-items: center;
1300
1325
  gap: 0.4rem;
1301
- font-size: var(--kpt-font-size-sm, 0.875rem);
1326
+ margin: 0;
1327
+ padding: 0;
1328
+ list-style: none;
1329
+ }
1330
+ .kpt-breadcrumb__item {
1331
+ display: inline-flex;
1332
+ align-items: center;
1333
+ gap: 0.4rem;
1302
1334
  }
1303
1335
  .kpt-breadcrumb__link {
1304
1336
  color: var(--kpt-color-on-surface-muted);
@@ -1673,6 +1705,7 @@
1673
1705
  display: block;
1674
1706
  }
1675
1707
  .kpt-carousel {
1708
+ --_kpt-carousel-dir: 1;
1676
1709
  position: relative;
1677
1710
  border-radius: var(--kpt-radius-lg, 0.75rem);
1678
1711
  overflow: hidden;
@@ -1710,32 +1743,52 @@
1710
1743
  .kpt-carousel__nav--next {
1711
1744
  inset-inline-end: 0.5rem;
1712
1745
  }
1713
- .kpt-carousel__nav:hover:not(:disabled) {
1746
+ .kpt-carousel__nav:hover:not([aria-disabled=true]) {
1714
1747
  background: var(--kpt-color-surface);
1715
1748
  }
1716
- .kpt-carousel__nav:disabled {
1749
+ .kpt-carousel__nav[aria-disabled=true] {
1717
1750
  opacity: 0.4;
1718
1751
  cursor: not-allowed;
1719
1752
  }
1720
1753
  .kpt-carousel__dots {
1721
1754
  position: absolute;
1722
- inset-block-end: 0.6rem;
1755
+ inset-block-end: 0.1rem;
1723
1756
  inset-inline: 0;
1724
1757
  display: flex;
1725
1758
  justify-content: center;
1726
- gap: 0.4rem;
1727
1759
  }
1728
1760
  .kpt-carousel__dot {
1761
+ display: grid;
1762
+ place-items: center;
1763
+ width: 1.5rem;
1764
+ height: 1.5rem;
1765
+ padding: 0;
1766
+ border: 0;
1767
+ border-radius: 50%;
1768
+ background: none;
1769
+ cursor: pointer;
1770
+ }
1771
+ .kpt-carousel__dot::before {
1772
+ content: "";
1729
1773
  width: 0.5rem;
1730
1774
  height: 0.5rem;
1731
- border: 0;
1732
1775
  border-radius: 50%;
1733
1776
  background: color-mix(in oklch, var(--kpt-color-on-surface) 40%, transparent);
1734
- cursor: pointer;
1735
1777
  }
1736
- .kpt-carousel__dot.is-active {
1778
+ .kpt-carousel__dot.is-active::before {
1737
1779
  background: var(--kpt-color-primary);
1738
1780
  }
1781
+ .kpt-carousel:dir(rtl) {
1782
+ --_kpt-carousel-dir: -1;
1783
+ }
1784
+ .kpt-carousel:dir(rtl) .kpt-carousel__nav .kpt-icon-host {
1785
+ transform: scaleX(-1);
1786
+ }
1787
+ @media (prefers-reduced-motion: reduce) {
1788
+ .kpt-carousel__track {
1789
+ transition: none;
1790
+ }
1791
+ }
1739
1792
  }
1740
1793
 
1741
1794
  /* src/lib/checkbox/checkbox.component.scss */
@@ -1782,13 +1835,28 @@
1782
1835
  opacity: 0;
1783
1836
  transition: opacity var(--kpt-motion-duration-fast, 120ms) var(--kpt-motion-easing-standard);
1784
1837
  }
1785
- .kpt-checkbox__input:checked + .kpt-checkbox__box {
1838
+ .kpt-checkbox__dash {
1839
+ display: none;
1840
+ width: 0.9rem;
1841
+ height: 0.9rem;
1842
+ fill: none;
1843
+ stroke: var(--kpt-color-on-primary);
1844
+ stroke-width: 2.25;
1845
+ stroke-linecap: round;
1846
+ }
1847
+ .kpt-checkbox__input:checked + .kpt-checkbox__box, .kpt-checkbox__input:indeterminate + .kpt-checkbox__box {
1786
1848
  background: var(--kpt-color-primary);
1787
1849
  border-color: var(--kpt-color-primary);
1788
1850
  }
1789
1851
  .kpt-checkbox__input:checked + .kpt-checkbox__box .kpt-checkbox__check {
1790
1852
  opacity: 1;
1791
1853
  }
1854
+ .kpt-checkbox__input:indeterminate + .kpt-checkbox__box .kpt-checkbox__check {
1855
+ display: none;
1856
+ }
1857
+ .kpt-checkbox__input:indeterminate + .kpt-checkbox__box .kpt-checkbox__dash {
1858
+ display: block;
1859
+ }
1792
1860
  .kpt-checkbox__input:focus-visible + .kpt-checkbox__box {
1793
1861
  outline: var(--kpt-border-width-medium, 2px) solid var(--kpt-color-focus-ring);
1794
1862
  outline-offset: 2px;
@@ -1878,6 +1946,21 @@
1878
1946
 
1879
1947
  /* src/lib/chips-input/chips-input.component.scss */
1880
1948
  @layer kpt.components {
1949
+ .kpt-chips-input__list,
1950
+ .kpt-chips-input__item {
1951
+ display: contents;
1952
+ }
1953
+ .kpt-chips-input__live {
1954
+ position: absolute;
1955
+ width: 1px;
1956
+ height: 1px;
1957
+ margin: -1px;
1958
+ padding: 0;
1959
+ overflow: hidden;
1960
+ clip-path: inset(50%);
1961
+ white-space: nowrap;
1962
+ border: 0;
1963
+ }
1881
1964
  .kpt-chips-input-host {
1882
1965
  display: block;
1883
1966
  }
@@ -2582,6 +2665,17 @@
2582
2665
  .kpt-date-range__clear:hover {
2583
2666
  color: var(--kpt-color-on-surface);
2584
2667
  }
2668
+ .kpt-calendar__live {
2669
+ position: absolute;
2670
+ width: 1px;
2671
+ height: 1px;
2672
+ margin: -1px;
2673
+ padding: 0;
2674
+ overflow: hidden;
2675
+ clip-path: inset(50%);
2676
+ white-space: nowrap;
2677
+ border: 0;
2678
+ }
2585
2679
  .kpt-calendar {
2586
2680
  width: 17rem;
2587
2681
  padding: var(--kpt-space-3, 0.75rem);
@@ -2655,6 +2749,10 @@
2655
2749
  .kpt-calendar__day:hover:not(:disabled) {
2656
2750
  background: var(--kpt-color-muted);
2657
2751
  }
2752
+ .kpt-calendar__day:disabled {
2753
+ opacity: 0.3;
2754
+ cursor: not-allowed;
2755
+ }
2658
2756
  .kpt-calendar__day--muted {
2659
2757
  color: var(--kpt-color-on-surface-muted);
2660
2758
  opacity: 0.5;
@@ -3229,7 +3327,7 @@
3229
3327
  position: fixed;
3230
3328
  inset: 0;
3231
3329
  z-index: var(--kpt-z-overlay, 1100);
3232
- background: color-mix(in oklch, black 45%, transparent);
3330
+ background: var(--kpt-color-overlay-scrim);
3233
3331
  opacity: 0;
3234
3332
  visibility: hidden;
3235
3333
  transition: opacity 0.2s, visibility 0.2s;
@@ -3507,6 +3605,13 @@
3507
3605
  opacity: 0.6;
3508
3606
  cursor: not-allowed;
3509
3607
  }
3608
+ .kpt-file-upload__zone[data-invalid] {
3609
+ border-color: var(--kpt-color-danger);
3610
+ }
3611
+ .kpt-file-upload__zone:focus-visible {
3612
+ outline: var(--kpt-border-width-medium, 2px) solid var(--kpt-color-focus-ring);
3613
+ outline-offset: 2px;
3614
+ }
3510
3615
  .kpt-file-upload__icon {
3511
3616
  font-size: 1.75rem;
3512
3617
  color: var(--kpt-color-on-surface-muted);
@@ -3683,20 +3788,21 @@
3683
3788
  height: 2.25rem;
3684
3789
  border: 0;
3685
3790
  border-radius: 999px;
3686
- background: color-mix(in oklch, black 45%, transparent);
3687
- color: #fff;
3791
+ background: color-mix(in oklch, var(--kpt-color-surface) 85%, transparent);
3792
+ color: var(--kpt-color-on-surface);
3793
+ box-shadow: var(--kpt-elevation-2);
3688
3794
  cursor: pointer;
3689
3795
  }
3690
3796
  .kpt-galleria__nav--prev {
3691
- left: var(--kpt-space-2, 0.5rem);
3797
+ inset-inline-start: var(--kpt-space-2, 0.5rem);
3692
3798
  }
3693
3799
  .kpt-galleria__nav--next {
3694
- right: var(--kpt-space-2, 0.5rem);
3800
+ inset-inline-end: var(--kpt-space-2, 0.5rem);
3695
3801
  }
3696
- .kpt-galleria__nav:hover:not(:disabled) {
3697
- background: color-mix(in oklch, black 65%, transparent);
3802
+ .kpt-galleria__nav:hover:not([aria-disabled=true]) {
3803
+ background: var(--kpt-color-surface);
3698
3804
  }
3699
- .kpt-galleria__nav:disabled {
3805
+ .kpt-galleria__nav[aria-disabled=true] {
3700
3806
  opacity: 0.4;
3701
3807
  cursor: default;
3702
3808
  }
@@ -3733,6 +3839,20 @@
3733
3839
  opacity: 1;
3734
3840
  border-color: var(--kpt-color-primary);
3735
3841
  }
3842
+ .kpt-galleria:dir(rtl) .kpt-galleria__nav .kpt-icon-host {
3843
+ transform: scaleX(-1);
3844
+ }
3845
+ .kpt-galleria__live {
3846
+ position: absolute;
3847
+ width: 1px;
3848
+ height: 1px;
3849
+ margin: -1px;
3850
+ padding: 0;
3851
+ overflow: hidden;
3852
+ clip-path: inset(50%);
3853
+ white-space: nowrap;
3854
+ border: 0;
3855
+ }
3736
3856
  }
3737
3857
 
3738
3858
  /* src/lib/icon/icon.component.scss */
@@ -3855,6 +3975,11 @@
3855
3975
  display: block;
3856
3976
  }
3857
3977
  .kpt-image--preview {
3978
+ padding: 0;
3979
+ border: 0;
3980
+ background: none;
3981
+ font: inherit;
3982
+ color: inherit;
3858
3983
  cursor: zoom-in;
3859
3984
  }
3860
3985
  .kpt-image__mask {
@@ -3863,35 +3988,52 @@
3863
3988
  display: flex;
3864
3989
  align-items: center;
3865
3990
  justify-content: center;
3866
- color: #fff;
3867
- font-size: 1.5rem;
3868
- background: color-mix(in oklch, black 40%, transparent);
3991
+ font-size: 1.25rem;
3992
+ background: var(--kpt-color-overlay-scrim);
3869
3993
  opacity: 0;
3870
3994
  transition: opacity 0.2s;
3871
3995
  }
3872
- .kpt-image--preview:hover .kpt-image__mask {
3996
+ .kpt-image__mask .kpt-icon-host {
3997
+ width: 2.5rem;
3998
+ height: 2.5rem;
3999
+ border-radius: 999px;
4000
+ background: var(--kpt-color-surface);
4001
+ color: var(--kpt-color-on-surface);
4002
+ box-shadow: var(--kpt-elevation-2);
4003
+ }
4004
+ .kpt-image--preview:hover .kpt-image__mask, .kpt-image--preview:focus-visible .kpt-image__mask {
3873
4005
  opacity: 1;
3874
4006
  }
3875
4007
  .kpt-image__overlay {
3876
- position: fixed;
3877
- inset: 0;
3878
- z-index: calc(var(--kpt-z-overlay, 1000) + 5);
4008
+ box-sizing: border-box;
4009
+ width: 100%;
4010
+ height: 100%;
4011
+ max-width: none;
4012
+ max-height: none;
4013
+ margin: 0;
4014
+ padding: var(--kpt-space-6, 1.5rem);
4015
+ border: 0;
4016
+ background: transparent;
4017
+ cursor: zoom-out;
4018
+ }
4019
+ .kpt-image__overlay[open] {
3879
4020
  display: flex;
3880
4021
  align-items: center;
3881
4022
  justify-content: center;
3882
- padding: var(--kpt-space-6, 1.5rem);
3883
- background: color-mix(in oklch, black 80%, transparent);
3884
- cursor: zoom-out;
4023
+ }
4024
+ .kpt-image__overlay::backdrop {
4025
+ background: var(--kpt-color-overlay-scrim);
3885
4026
  }
3886
4027
  .kpt-image__full {
3887
4028
  max-width: 90vw;
3888
4029
  max-height: 90vh;
3889
4030
  border-radius: var(--kpt-radius-md, 0.5rem);
4031
+ cursor: default;
3890
4032
  }
3891
4033
  .kpt-image__close {
3892
4034
  position: absolute;
3893
- top: var(--kpt-space-4, 1rem);
3894
- right: var(--kpt-space-4, 1rem);
4035
+ inset-block-start: var(--kpt-space-4, 1rem);
4036
+ inset-inline-end: var(--kpt-space-4, 1rem);
3895
4037
  display: inline-flex;
3896
4038
  width: 2.5rem;
3897
4039
  height: 2.5rem;
@@ -3899,12 +4041,13 @@
3899
4041
  justify-content: center;
3900
4042
  border: 0;
3901
4043
  border-radius: 999px;
3902
- background: color-mix(in oklch, white 15%, transparent);
3903
- color: #fff;
4044
+ background: var(--kpt-color-surface);
4045
+ color: var(--kpt-color-on-surface);
4046
+ box-shadow: var(--kpt-elevation-2);
3904
4047
  cursor: pointer;
3905
4048
  }
3906
4049
  .kpt-image__close:hover {
3907
- background: color-mix(in oklch, white 25%, transparent);
4050
+ background: var(--kpt-color-muted);
3908
4051
  }
3909
4052
  }
3910
4053
 
@@ -4094,6 +4237,8 @@
4094
4237
  display: inline-flex;
4095
4238
  cursor: pointer;
4096
4239
  touch-action: none;
4240
+ user-select: none;
4241
+ -webkit-user-select: none;
4097
4242
  outline: none;
4098
4243
  border-radius: 50%;
4099
4244
  }
@@ -4109,12 +4254,12 @@
4109
4254
  }
4110
4255
  .kpt-knob__value {
4111
4256
  stroke: var(--kpt-color-primary);
4112
- transition: stroke-dashoffset 0.1s;
4113
4257
  }
4114
4258
  .kpt-knob__text {
4115
4259
  fill: var(--kpt-color-on-surface);
4116
4260
  font-size: var(--kpt-font-size-lg, 1.125rem);
4117
4261
  font-weight: var(--kpt-font-weight-semibold, 600);
4262
+ font-variant-numeric: tabular-nums;
4118
4263
  }
4119
4264
  }
4120
4265
 
@@ -4132,6 +4277,13 @@
4132
4277
  .kpt-listbox--invalid {
4133
4278
  border-color: var(--kpt-form-field-border-error);
4134
4279
  }
4280
+ .kpt-listbox--disabled {
4281
+ opacity: 0.6;
4282
+ }
4283
+ .kpt-listbox:has(.kpt-listbox__items:focus-visible) {
4284
+ border-color: var(--kpt-form-field-border-focus);
4285
+ box-shadow: 0 0 0 2px color-mix(in oklch, var(--kpt-form-field-border-focus) 30%, transparent);
4286
+ }
4135
4287
  .kpt-listbox__filter {
4136
4288
  display: flex;
4137
4289
  align-items: center;
@@ -4155,6 +4307,9 @@
4155
4307
  overflow-y: auto;
4156
4308
  padding: var(--kpt-space-1, 0.25rem);
4157
4309
  }
4310
+ .kpt-listbox__items:focus {
4311
+ outline: none;
4312
+ }
4158
4313
  .kpt-listbox__item {
4159
4314
  display: flex;
4160
4315
  align-items: center;
@@ -4170,15 +4325,18 @@
4170
4325
  text-align: left;
4171
4326
  cursor: pointer;
4172
4327
  }
4173
- .kpt-listbox__item:hover:not(:disabled) {
4328
+ .kpt-listbox__item:hover:not([aria-disabled=true]) {
4174
4329
  background: var(--kpt-color-muted);
4175
4330
  }
4331
+ .kpt-listbox__items:focus-visible .kpt-listbox__item.is-active {
4332
+ box-shadow: inset 0 0 0 2px var(--kpt-form-field-border-focus);
4333
+ }
4176
4334
  .kpt-listbox__item.is-selected {
4177
4335
  background: color-mix(in oklch, var(--kpt-color-primary) 12%, transparent);
4178
4336
  color: var(--kpt-color-primary);
4179
4337
  font-weight: var(--kpt-font-weight-medium, 500);
4180
4338
  }
4181
- .kpt-listbox__item:disabled {
4339
+ .kpt-listbox__item[aria-disabled=true] {
4182
4340
  opacity: 0.5;
4183
4341
  cursor: not-allowed;
4184
4342
  }
@@ -4206,6 +4364,8 @@
4206
4364
  border-radius: var(--kpt-radius-md, 0.5rem);
4207
4365
  }
4208
4366
  .kpt-megamenu__top {
4367
+ box-sizing: border-box;
4368
+ text-decoration: none;
4209
4369
  display: inline-flex;
4210
4370
  align-items: center;
4211
4371
  gap: var(--kpt-space-2, 0.5rem);
@@ -4245,6 +4405,8 @@
4245
4405
  color: var(--kpt-color-on-surface-muted);
4246
4406
  }
4247
4407
  .kpt-megamenu__link {
4408
+ box-sizing: border-box;
4409
+ text-decoration: none;
4248
4410
  display: flex;
4249
4411
  align-items: center;
4250
4412
  gap: var(--kpt-space-2, 0.5rem);
@@ -4429,6 +4591,8 @@
4429
4591
  display: inline-flex;
4430
4592
  }
4431
4593
  .kpt-menubar__top {
4594
+ box-sizing: border-box;
4595
+ text-decoration: none;
4432
4596
  display: inline-flex;
4433
4597
  align-items: center;
4434
4598
  gap: var(--kpt-space-2, 0.5rem);
@@ -4459,6 +4623,8 @@
4459
4623
  box-shadow: var(--kpt-elevation-3);
4460
4624
  }
4461
4625
  .kpt-menubar__item {
4626
+ box-sizing: border-box;
4627
+ text-decoration: none;
4462
4628
  display: flex;
4463
4629
  align-items: center;
4464
4630
  gap: var(--kpt-space-2, 0.5rem);
@@ -5130,6 +5296,11 @@
5130
5296
  flex-direction: column;
5131
5297
  gap: var(--kpt-space-2, 0.5rem);
5132
5298
  }
5299
+ .kpt-radio-group--horizontal {
5300
+ flex-direction: row;
5301
+ flex-wrap: wrap;
5302
+ column-gap: var(--kpt-space-4, 1rem);
5303
+ }
5133
5304
  .kpt-radio {
5134
5305
  display: inline-flex;
5135
5306
  position: relative;
@@ -5194,23 +5365,66 @@
5194
5365
  font-size: 1.4rem;
5195
5366
  }
5196
5367
  .kpt-rating__star {
5368
+ position: relative;
5197
5369
  display: inline-flex;
5198
- border: 0;
5199
- background: none;
5200
5370
  padding: 0.1rem;
5201
- cursor: pointer;
5202
5371
  color: var(--kpt-color-border-strong);
5203
5372
  transition: color var(--kpt-motion-duration-fast, 120ms) var(--kpt-motion-easing-standard);
5204
5373
  }
5205
- .kpt-rating__star.is-filled {
5374
+ .kpt-rating__star[data-fill=full] {
5206
5375
  color: var(--kpt-color-warning);
5207
5376
  }
5208
- .kpt-rating__star.is-filled svg {
5377
+ .kpt-rating__star[data-fill=full] svg {
5209
5378
  fill: currentColor;
5210
5379
  }
5211
- .kpt-rating__star:disabled {
5380
+ .kpt-rating__fill {
5381
+ position: absolute;
5382
+ inset: 0;
5383
+ display: none;
5384
+ padding: inherit;
5385
+ color: var(--kpt-color-warning);
5386
+ clip-path: inset(0 50% 0 0);
5387
+ pointer-events: none;
5388
+ }
5389
+ .kpt-rating__fill svg {
5390
+ fill: currentColor;
5391
+ }
5392
+ .kpt-rating__star[data-fill=half] > .kpt-rating__fill {
5393
+ display: inline-flex;
5394
+ }
5395
+ .kpt-rating__fill:dir(rtl) {
5396
+ clip-path: inset(0 0 0 50%);
5397
+ }
5398
+ .kpt-rating__hit {
5399
+ position: absolute;
5400
+ inset-block: 0;
5401
+ padding: 0;
5402
+ border: 0;
5403
+ background: none;
5404
+ cursor: pointer;
5405
+ }
5406
+ .kpt-rating__hit--full {
5407
+ inset-inline: 0;
5408
+ }
5409
+ .kpt-rating__hit--start {
5410
+ inset-inline-start: 0;
5411
+ width: 50%;
5412
+ }
5413
+ .kpt-rating__hit--end {
5414
+ inset-inline-end: 0;
5415
+ width: 50%;
5416
+ }
5417
+ .kpt-rating__hit[aria-disabled=true] {
5212
5418
  cursor: default;
5213
5419
  }
5420
+ .kpt-rating__hit:focus-visible {
5421
+ outline: var(--kpt-border-width-medium, 2px) solid var(--kpt-form-field-border-focus);
5422
+ outline-offset: 1px;
5423
+ border-radius: var(--kpt-radius-sm, 0.25rem);
5424
+ }
5425
+ .kpt-rating--disabled {
5426
+ opacity: 0.6;
5427
+ }
5214
5428
  }
5215
5429
 
5216
5430
  /* src/lib/rich-text/rich-text.component.scss */
@@ -5498,6 +5712,50 @@
5498
5712
  border-radius: var(--kpt-radius-md, 0.5rem);
5499
5713
  box-shadow: var(--kpt-elevation-3);
5500
5714
  }
5715
+ .kpt-rt-link {
5716
+ display: grid;
5717
+ grid-template-columns: 1fr auto;
5718
+ gap: var(--kpt-space-2, 0.5rem);
5719
+ width: min(22rem, 90vw);
5720
+ padding: var(--kpt-space-3, 0.75rem);
5721
+ background: var(--kpt-color-surface-raised);
5722
+ border: var(--kpt-border-width-thin, 1px) solid var(--kpt-color-border);
5723
+ border-radius: var(--kpt-radius-md, 0.5rem);
5724
+ box-shadow: var(--kpt-elevation-3);
5725
+ font-size: var(--kpt-font-size-sm, 0.875rem);
5726
+ }
5727
+ .kpt-rt-link__label {
5728
+ grid-column: 1/-1;
5729
+ color: var(--kpt-color-on-surface-muted);
5730
+ }
5731
+ .kpt-rt-link__input {
5732
+ min-width: 0;
5733
+ height: 2rem;
5734
+ padding-inline: var(--kpt-space-2, 0.5rem);
5735
+ border: var(--kpt-border-width-thin, 1px) solid var(--kpt-form-field-border);
5736
+ border-radius: var(--kpt-radius-sm, 0.25rem);
5737
+ background: var(--kpt-form-field-bg);
5738
+ color: var(--kpt-form-field-text);
5739
+ font: inherit;
5740
+ }
5741
+ .kpt-rt-link__input:focus-visible {
5742
+ outline: none;
5743
+ border-color: var(--kpt-form-field-border-focus);
5744
+ }
5745
+ .kpt-rt-link__apply {
5746
+ height: 2rem;
5747
+ padding-inline: var(--kpt-space-3, 0.75rem);
5748
+ border: 0;
5749
+ border-radius: var(--kpt-radius-sm, 0.25rem);
5750
+ background: var(--kpt-color-primary);
5751
+ color: var(--kpt-color-on-primary);
5752
+ font: inherit;
5753
+ cursor: pointer;
5754
+ }
5755
+ .kpt-rt-link__apply:focus-visible {
5756
+ outline: var(--kpt-border-width-medium, 2px) solid var(--kpt-color-focus-ring);
5757
+ outline-offset: 2px;
5758
+ }
5501
5759
  .kpt-rich-text__swatches {
5502
5760
  display: grid;
5503
5761
  grid-template-columns: repeat(7, 1fr);
@@ -5709,8 +5967,8 @@
5709
5967
  }
5710
5968
  .kpt-scroll-top {
5711
5969
  position: fixed;
5712
- right: var(--kpt-space-6, 1.5rem);
5713
- bottom: var(--kpt-space-6, 1.5rem);
5970
+ inset-inline-end: var(--kpt-space-6, 1.5rem);
5971
+ inset-block-end: var(--kpt-space-6, 1.5rem);
5714
5972
  z-index: var(--kpt-z-overlay, 1000);
5715
5973
  display: inline-flex;
5716
5974
  align-items: center;
@@ -5736,6 +5994,12 @@
5736
5994
  .kpt-scroll-top:hover {
5737
5995
  background: var(--kpt-color-primary-hover, var(--kpt-color-primary));
5738
5996
  }
5997
+ @media (prefers-reduced-motion: reduce) {
5998
+ .kpt-scroll-top {
5999
+ transition: none;
6000
+ transform: none;
6001
+ }
6002
+ }
5739
6003
  }
5740
6004
 
5741
6005
  /* src/lib/select/select.component.scss */
@@ -5820,6 +6084,7 @@
5820
6084
  transform: rotate(180deg);
5821
6085
  }
5822
6086
  .kpt-select__panel {
6087
+ max-width: calc(100vw - 2 * var(--kpt-space-4, 1rem));
5823
6088
  background: var(--kpt-color-surface-raised);
5824
6089
  border: var(--kpt-border-width-thin, 1px) solid var(--kpt-color-border);
5825
6090
  border-radius: var(--kpt-radius-md, 0.5rem);
@@ -5877,8 +6142,11 @@
5877
6142
  .kpt-select__option-label {
5878
6143
  flex: 1;
5879
6144
  min-width: 0;
6145
+ overflow-wrap: anywhere;
5880
6146
  }
5881
6147
  .kpt-select__option-tick {
6148
+ flex-shrink: 0;
6149
+ margin-inline-start: var(--kpt-space-2, 0.5rem);
5882
6150
  color: var(--kpt-color-primary);
5883
6151
  }
5884
6152
  .kpt-select__check {
@@ -5936,16 +6204,21 @@
5936
6204
  overflow-y: auto;
5937
6205
  }
5938
6206
  .kpt-sidenav__scroll a {
5939
- display: block;
6207
+ display: flex;
6208
+ align-items: center;
6209
+ gap: var(--kpt-space-3, 0.75rem);
5940
6210
  padding: var(--kpt-space-2, 0.5rem) var(--kpt-space-3, 0.75rem);
5941
6211
  border-radius: var(--kpt-radius-md, 0.5rem);
5942
6212
  color: inherit;
5943
6213
  text-decoration: none;
5944
6214
  font-size: var(--kpt-font-size-sm, 0.875rem);
5945
6215
  }
5946
- .kpt-sidenav__scroll a:hover {
6216
+ .kpt-sidenav__scroll a:hover, .kpt-sidenav__scroll a[aria-current=page] {
5947
6217
  background: var(--kpt-color-muted);
5948
6218
  }
6219
+ .kpt-sidenav__scroll a[aria-current=page] {
6220
+ font-weight: var(--kpt-font-weight-medium, 500);
6221
+ }
5949
6222
  .kpt-sidenav [kptSidenavFooter] {
5950
6223
  flex: 0 0 auto;
5951
6224
  box-sizing: border-box;
@@ -5961,7 +6234,7 @@
5961
6234
  }
5962
6235
  .kpt-skeleton {
5963
6236
  display: block;
5964
- background: linear-gradient(90deg, var(--kpt-color-surface-variant) 25%, color-mix(in oklab, var(--kpt-color-surface-variant) 60%, var(--kpt-color-surface)) 50%, var(--kpt-color-surface-variant) 75%);
6237
+ background: linear-gradient(90deg, var(--kpt-color-muted) 25%, color-mix(in oklab, var(--kpt-color-muted) 45%, var(--kpt-color-surface)) 50%, var(--kpt-color-muted) 75%);
5965
6238
  background-size: 200% 100%;
5966
6239
  border-radius: var(--kpt-radius-md, 0.5rem);
5967
6240
  animation: kpt-skeleton-shimmer 1.4s ease-in-out infinite;
@@ -6049,6 +6322,17 @@
6049
6322
  opacity: 0.5;
6050
6323
  cursor: not-allowed;
6051
6324
  }
6325
+ .kpt-slider__sr {
6326
+ position: absolute;
6327
+ width: 1px;
6328
+ height: 1px;
6329
+ margin: -1px;
6330
+ padding: 0;
6331
+ overflow: hidden;
6332
+ clip-path: inset(50%);
6333
+ white-space: nowrap;
6334
+ border: 0;
6335
+ }
6052
6336
  .kpt-slider__value {
6053
6337
  min-width: 2.5rem;
6054
6338
  text-align: end;
@@ -6156,11 +6440,14 @@
6156
6440
  gap: var(--kpt-space-2, 0.5rem);
6157
6441
  opacity: 0;
6158
6442
  pointer-events: none;
6159
- transition: opacity 0.15s ease;
6443
+ visibility: hidden;
6444
+ transition: opacity 0.15s ease, visibility 0s linear 0.15s;
6160
6445
  }
6161
6446
  .kpt-speed-dial.is-open .kpt-speed-dial__actions {
6162
6447
  opacity: 1;
6163
6448
  pointer-events: auto;
6449
+ visibility: visible;
6450
+ transition: opacity 0.15s ease, visibility 0s;
6164
6451
  }
6165
6452
  .kpt-speed-dial[data-direction=up] .kpt-speed-dial__actions {
6166
6453
  flex-direction: column-reverse;
@@ -6241,6 +6528,17 @@
6241
6528
  animation-duration: 1.4s;
6242
6529
  }
6243
6530
  }
6531
+ .kpt-spinner__label {
6532
+ position: absolute;
6533
+ width: 1px;
6534
+ height: 1px;
6535
+ margin: -1px;
6536
+ padding: 0;
6537
+ overflow: hidden;
6538
+ clip-path: inset(50%);
6539
+ white-space: nowrap;
6540
+ border: 0;
6541
+ }
6244
6542
  }
6245
6543
 
6246
6544
  /* src/lib/split-button/split-button.component.scss */
@@ -6262,6 +6560,22 @@
6262
6560
  --_fg: var(--kpt-color-on-muted);
6263
6561
  --_bg-hover: var(--kpt-color-muted-hover);
6264
6562
  }
6563
+ .kpt-split-button[data-variant=outline] {
6564
+ --_bg: transparent;
6565
+ --_fg: var(--kpt-button-outline-fg);
6566
+ --_bg-hover: var(--kpt-button-outline-bg-hover);
6567
+ --_divider: var(--kpt-button-outline-border);
6568
+ border: var(--kpt-border-width-thin, 1px) solid var(--kpt-button-outline-border);
6569
+ }
6570
+ .kpt-split-button[data-variant=outline] .kpt-split-button__main,
6571
+ .kpt-split-button[data-variant=outline] .kpt-split-button__toggle {
6572
+ height: calc(2.5rem - 2 * var(--kpt-border-width-thin, 1px));
6573
+ }
6574
+ .kpt-split-button[data-variant=text] {
6575
+ --_bg: transparent;
6576
+ --_fg: var(--kpt-button-text-fg);
6577
+ --_bg-hover: var(--kpt-button-text-bg-hover);
6578
+ }
6265
6579
  .kpt-split-button__main, .kpt-split-button__toggle {
6266
6580
  border: 0;
6267
6581
  background: var(--_bg);
@@ -6304,7 +6618,7 @@
6304
6618
  align-items: center;
6305
6619
  justify-content: center;
6306
6620
  width: 2.25rem;
6307
- border-inline-start: 1px solid color-mix(in oklch, var(--_fg) 25%, transparent);
6621
+ border-inline-start: 1px solid var(--_divider, color-mix(in oklch, var(--_fg) 25%, transparent));
6308
6622
  }
6309
6623
  .kpt-split-button__panel {
6310
6624
  min-width: 11rem;
@@ -6387,6 +6701,7 @@
6387
6701
  @layer kpt.components {
6388
6702
  .kpt-splitter-host {
6389
6703
  display: block;
6704
+ height: 100%;
6390
6705
  }
6391
6706
  .kpt-splitter {
6392
6707
  display: flex;
@@ -6704,6 +7019,14 @@
6704
7019
  opacity: 0.6;
6705
7020
  background: var(--kpt-color-surface-variant);
6706
7021
  }
7022
+ .kpt-textarea__counter {
7023
+ display: block;
7024
+ margin-top: var(--kpt-space-1, 0.25rem);
7025
+ text-align: end;
7026
+ font-size: var(--kpt-font-size-xs, 0.75rem);
7027
+ font-variant-numeric: tabular-nums;
7028
+ color: var(--kpt-color-on-surface-muted);
7029
+ }
6707
7030
  }
6708
7031
 
6709
7032
  /* src/lib/timeline/timeline.component.scss */
@@ -6842,6 +7165,21 @@
6842
7165
  font-weight: var(--kpt-font-weight-semibold, 600);
6843
7166
  margin-bottom: 0.1rem;
6844
7167
  }
7168
+ .kpt-toast__action {
7169
+ flex: none;
7170
+ align-self: center;
7171
+ padding: var(--kpt-space-1, 0.25rem) var(--kpt-space-2, 0.5rem);
7172
+ border: 0;
7173
+ border-radius: var(--kpt-radius-sm, 0.25rem);
7174
+ background: none;
7175
+ color: var(--kpt-color-primary);
7176
+ font: inherit;
7177
+ font-weight: var(--kpt-font-weight-semibold, 600);
7178
+ cursor: pointer;
7179
+ }
7180
+ .kpt-toast__action:hover {
7181
+ background: var(--kpt-color-muted);
7182
+ }
6845
7183
  .kpt-toast__close {
6846
7184
  background: none;
6847
7185
  border: 0;
@@ -6854,6 +7192,19 @@
6854
7192
  .kpt-toast__close:hover {
6855
7193
  color: var(--kpt-color-on-surface);
6856
7194
  }
7195
+ .kpt-toast-container__live {
7196
+ position: fixed;
7197
+ inset-block-start: 0;
7198
+ inset-inline-start: 0;
7199
+ width: 1px;
7200
+ height: 1px;
7201
+ margin: -1px;
7202
+ padding: 0;
7203
+ overflow: hidden;
7204
+ clip-path: inset(50%);
7205
+ white-space: nowrap;
7206
+ border: 0;
7207
+ }
6857
7208
  @keyframes kpt-toast-in {
6858
7209
  from {
6859
7210
  opacity: 0;
@@ -6919,6 +7270,13 @@
6919
7270
  margin: 0;
6920
7271
  padding: 0;
6921
7272
  }
7273
+ .kpt-tree__node {
7274
+ outline: none;
7275
+ }
7276
+ .kpt-tree__node:focus-visible > .kpt-tree__row {
7277
+ outline: var(--kpt-border-width-medium, 2px) solid var(--kpt-color-focus-ring);
7278
+ outline-offset: -2px;
7279
+ }
6922
7280
  .kpt-tree__row {
6923
7281
  display: flex;
6924
7282
  align-items: center;
package/index.css CHANGED
@@ -85,6 +85,62 @@
85
85
  outline-offset: 2px;
86
86
  border-radius: var(--kpt-radius-sm, 0.25rem);
87
87
  }
88
+ @supports not selector(::-webkit-scrollbar) {
89
+ * {
90
+ scrollbar-color: color-mix(in oklch, var(--kpt-scrollbar-thumb) var(--kpt-scrollbar-thumb-opacity), transparent) var(--kpt-scrollbar-track);
91
+ scrollbar-width: var(--kpt-scrollbar-width-keyword);
92
+ }
93
+ }
94
+ ::-webkit-scrollbar {
95
+ width: var(--kpt-scrollbar-size);
96
+ height: var(--kpt-scrollbar-size);
97
+ background: var(--kpt-scrollbar-track);
98
+ }
99
+ ::-webkit-scrollbar-track,
100
+ ::-webkit-scrollbar-corner {
101
+ background: var(--kpt-scrollbar-track);
102
+ }
103
+ ::-webkit-scrollbar-thumb {
104
+ background: color-mix(in oklch, var(--kpt-scrollbar-thumb) var(--kpt-scrollbar-thumb-opacity), transparent);
105
+ border-radius: var(--kpt-scrollbar-radius);
106
+ }
107
+ ::-webkit-scrollbar-thumb:hover {
108
+ background: color-mix(in oklch, var(--kpt-scrollbar-thumb-hover) var(--kpt-scrollbar-thumb-hover-opacity), transparent);
109
+ }
110
+ ::-webkit-scrollbar-thumb:active {
111
+ background: var(--kpt-scrollbar-thumb-hover);
112
+ }
113
+ ::-webkit-scrollbar-button {
114
+ --_kpt-scrollbar-arrow: color-mix(in oklch, var(--kpt-scrollbar-thumb) var(--kpt-scrollbar-thumb-opacity), transparent);
115
+ background-color: transparent;
116
+ background-position: center;
117
+ background-repeat: no-repeat;
118
+ background-size: 60% 60%;
119
+ }
120
+ ::-webkit-scrollbar-button:hover {
121
+ --_kpt-scrollbar-arrow: color-mix(in oklch, var(--kpt-scrollbar-thumb-hover) var(--kpt-scrollbar-thumb-hover-opacity), transparent);
122
+ }
123
+ ::-webkit-scrollbar-button:vertical {
124
+ height: var(--kpt-scrollbar-button-size);
125
+ }
126
+ ::-webkit-scrollbar-button:horizontal {
127
+ width: var(--kpt-scrollbar-button-size);
128
+ }
129
+ ::-webkit-scrollbar-button:vertical:start:increment, ::-webkit-scrollbar-button:vertical:end:decrement, ::-webkit-scrollbar-button:horizontal:start:increment, ::-webkit-scrollbar-button:horizontal:end:decrement {
130
+ display: none;
131
+ }
132
+ ::-webkit-scrollbar-button:vertical:decrement {
133
+ background-image: conic-gradient(from 150deg at 50% 10%, var(--_kpt-scrollbar-arrow) 60deg, transparent 0);
134
+ }
135
+ ::-webkit-scrollbar-button:vertical:increment {
136
+ background-image: conic-gradient(from -30deg at 50% 90%, var(--_kpt-scrollbar-arrow) 60deg, transparent 0);
137
+ }
138
+ ::-webkit-scrollbar-button:horizontal:decrement {
139
+ background-image: conic-gradient(from 60deg at 10% 50%, var(--_kpt-scrollbar-arrow) 60deg, transparent 0);
140
+ }
141
+ ::-webkit-scrollbar-button:horizontal:increment {
142
+ background-image: conic-gradient(from 240deg at 90% 50%, var(--_kpt-scrollbar-arrow) 60deg, transparent 0);
143
+ }
88
144
  }
89
145
  @layer kpt.components {
90
146
  .kpt-rich-content ul,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@konce-pt/styles",
3
- "version": "0.9.1",
3
+ "version": "0.11.0",
4
4
  "description": "Base CSS for Koncept UI — reset, cascade @layer ordering and neutral light/dark theme (SCSS source).",
5
5
  "license": "MIT",
6
6
  "author": "konce.pt",
@@ -52,7 +52,7 @@
52
52
  "src"
53
53
  ],
54
54
  "peerDependencies": {
55
- "@konce-pt/tokens": "0.9.1"
55
+ "@konce-pt/tokens": "0.11.0"
56
56
  },
57
57
  "devDependencies": {
58
58
  "sass": "^1.77.0"
package/src/index.scss CHANGED
@@ -100,6 +100,106 @@
100
100
  outline-offset: 2px;
101
101
  border-radius: var(--kpt-radius-sm, 0.25rem);
102
102
  }
103
+
104
+ // ── Paski przewijania ──
105
+ // Wygląd z tokenów `--kpt-scrollbar-*`: uchwyt w kolorze wiodącym (więc sam idzie za motywem
106
+ // ciemnym i za kolorem marki), tor bez tła, grubość 8px, strzałki wyłączone.
107
+ //
108
+ // Uchwyt nie ma pełnego koloru w spoczynku: w stockowej palecie kolor wiodący to prawie czerń
109
+ // (w ciemnym — biel) i pasek wyglądał jak przycisk główny. Mieszamy go z przezroczystością
110
+ // (40% spoczynek, 65% pod kursorem, pełny przy przeciąganiu) — przezroczystość składa się z tłem,
111
+ // więc ten sam token daje szarość w stocku, odcień marki z kolorem marki i dobrą jasność
112
+ // w obu motywach bez osobnych wartości dla ciemnego.
113
+ //
114
+ // Dwie drogi, bo przeglądarki nie mają jednej. Chromium i Safari stylują pseudoelementy
115
+ // `::-webkit-scrollbar*` — tylko tam da się ustawić grubość w pikselach i strzałki. Firefox zna
116
+ // wyłącznie standard: `scrollbar-color` i `scrollbar-width` (auto/thin/none). Standard trzeba
117
+ // podać TYLKO tam, gdzie pseudoelementów nie ma: Chromium od wersji 121 też go rozumie i wtedy
118
+ // całkowicie ignoruje `::-webkit-scrollbar` — grubość i strzałki znikałyby po cichu.
119
+ //
120
+ // Reguła żyje w `kpt.base`, więc aplikacja nadpisuje ją bez wojny specyficzności: albo tokenami,
121
+ // albo własnym CSS-em (ten spoza warstw wygrywa z każdą regułą w warstwie).
122
+ @supports not selector(::-webkit-scrollbar) {
123
+ * {
124
+ scrollbar-color: color-mix(in oklch, var(--kpt-scrollbar-thumb) var(--kpt-scrollbar-thumb-opacity), transparent)
125
+ var(--kpt-scrollbar-track);
126
+ scrollbar-width: var(--kpt-scrollbar-width-keyword);
127
+ }
128
+ }
129
+
130
+ ::-webkit-scrollbar {
131
+ width: var(--kpt-scrollbar-size);
132
+ height: var(--kpt-scrollbar-size);
133
+ background: var(--kpt-scrollbar-track);
134
+ }
135
+
136
+ ::-webkit-scrollbar-track,
137
+ ::-webkit-scrollbar-corner {
138
+ background: var(--kpt-scrollbar-track);
139
+ }
140
+
141
+ ::-webkit-scrollbar-thumb {
142
+ background: color-mix(in oklch, var(--kpt-scrollbar-thumb) var(--kpt-scrollbar-thumb-opacity), transparent);
143
+ border-radius: var(--kpt-scrollbar-radius);
144
+
145
+ &:hover {
146
+ background: color-mix(in oklch, var(--kpt-scrollbar-thumb-hover) var(--kpt-scrollbar-thumb-hover-opacity), transparent);
147
+ }
148
+
149
+ &:active {
150
+ background: var(--kpt-scrollbar-thumb-hover);
151
+ }
152
+ }
153
+
154
+ // Strzałki: rozmiar `--kpt-scrollbar-button-size` (0 = brak), trójkąt w kolorze uchwytu.
155
+ //
156
+ // Trójkąt to `conic-gradient` — wycinek koła o kącie 60° z wierzchołkiem przy krawędzi, przycięty
157
+ // do pola tła. Nie maska i nie obrazek SVG: Chromium nie stosuje `mask` na pseudoelementach paska
158
+ // (strzałka wychodziła pełnym kwadratem), a obrazek nie wziąłby barwy z tokenu.
159
+ ::-webkit-scrollbar-button {
160
+ --_kpt-scrollbar-arrow: color-mix(in oklch, var(--kpt-scrollbar-thumb) var(--kpt-scrollbar-thumb-opacity), transparent);
161
+ background-color: transparent;
162
+ background-position: center;
163
+ background-repeat: no-repeat;
164
+ background-size: 60% 60%;
165
+
166
+ &:hover {
167
+ --_kpt-scrollbar-arrow: color-mix(in oklch, var(--kpt-scrollbar-thumb-hover) var(--kpt-scrollbar-thumb-hover-opacity), transparent);
168
+ }
169
+
170
+ &:vertical {
171
+ height: var(--kpt-scrollbar-button-size);
172
+ }
173
+
174
+ &:horizontal {
175
+ width: var(--kpt-scrollbar-button-size);
176
+ }
177
+
178
+ // Po jednej strzałce na koniec — bez par „góra+dół” przy każdej krawędzi, które
179
+ // Chromium dokłada, gdy styl strzałek w ogóle istnieje.
180
+ &:vertical:start:increment,
181
+ &:vertical:end:decrement,
182
+ &:horizontal:start:increment,
183
+ &:horizontal:end:decrement {
184
+ display: none;
185
+ }
186
+
187
+ &:vertical:decrement {
188
+ background-image: conic-gradient(from 150deg at 50% 10%, var(--_kpt-scrollbar-arrow) 60deg, transparent 0);
189
+ }
190
+
191
+ &:vertical:increment {
192
+ background-image: conic-gradient(from -30deg at 50% 90%, var(--_kpt-scrollbar-arrow) 60deg, transparent 0);
193
+ }
194
+
195
+ &:horizontal:decrement {
196
+ background-image: conic-gradient(from 60deg at 10% 50%, var(--_kpt-scrollbar-arrow) 60deg, transparent 0);
197
+ }
198
+
199
+ &:horizontal:increment {
200
+ background-image: conic-gradient(from 240deg at 90% 50%, var(--_kpt-scrollbar-arrow) 60deg, transparent 0);
201
+ }
202
+ }
103
203
  }
104
204
 
105
205
  @layer kpt.components {