@konce-pt/styles 0.10.0 → 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
@@ -4237,6 +4237,8 @@
4237
4237
  display: inline-flex;
4238
4238
  cursor: pointer;
4239
4239
  touch-action: none;
4240
+ user-select: none;
4241
+ -webkit-user-select: none;
4240
4242
  outline: none;
4241
4243
  border-radius: 50%;
4242
4244
  }
@@ -4252,12 +4254,12 @@
4252
4254
  }
4253
4255
  .kpt-knob__value {
4254
4256
  stroke: var(--kpt-color-primary);
4255
- transition: stroke-dashoffset 0.1s;
4256
4257
  }
4257
4258
  .kpt-knob__text {
4258
4259
  fill: var(--kpt-color-on-surface);
4259
4260
  font-size: var(--kpt-font-size-lg, 1.125rem);
4260
4261
  font-weight: var(--kpt-font-weight-semibold, 600);
4262
+ font-variant-numeric: tabular-nums;
4261
4263
  }
4262
4264
  }
4263
4265
 
@@ -6082,6 +6084,7 @@
6082
6084
  transform: rotate(180deg);
6083
6085
  }
6084
6086
  .kpt-select__panel {
6087
+ max-width: calc(100vw - 2 * var(--kpt-space-4, 1rem));
6085
6088
  background: var(--kpt-color-surface-raised);
6086
6089
  border: var(--kpt-border-width-thin, 1px) solid var(--kpt-color-border);
6087
6090
  border-radius: var(--kpt-radius-md, 0.5rem);
@@ -6139,8 +6142,11 @@
6139
6142
  .kpt-select__option-label {
6140
6143
  flex: 1;
6141
6144
  min-width: 0;
6145
+ overflow-wrap: anywhere;
6142
6146
  }
6143
6147
  .kpt-select__option-tick {
6148
+ flex-shrink: 0;
6149
+ margin-inline-start: var(--kpt-space-2, 0.5rem);
6144
6150
  color: var(--kpt-color-primary);
6145
6151
  }
6146
6152
  .kpt-select__check {
@@ -7187,7 +7193,9 @@
7187
7193
  color: var(--kpt-color-on-surface);
7188
7194
  }
7189
7195
  .kpt-toast-container__live {
7190
- position: absolute;
7196
+ position: fixed;
7197
+ inset-block-start: 0;
7198
+ inset-inline-start: 0;
7191
7199
  width: 1px;
7192
7200
  height: 1px;
7193
7201
  margin: -1px;
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.10.0",
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.10.0"
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 {