@krometra/ui-kit 0.6.1 → 0.8.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/README.md +29 -6
- package/dist/ui-kit.js +140 -10
- package/dist/ui-kit.umd.cjs +1 -1
- package/package.json +1 -1
- package/src/theme.js +99 -9
package/README.md
CHANGED
|
@@ -7,7 +7,7 @@ UI-kit на Vue 3 со сменными темами оформления, св
|
|
|
7
7
|
|
|
8
8
|
**Витрина и конструктор темы: <https://krometra.github.io/ui-kit/>**
|
|
9
9
|
|
|
10
|
-
37 компонентов, 88 иконок,
|
|
10
|
+
37 компонентов, 88 иконок, одиннадцать готовых тем, две цветовые схемы и конструктор
|
|
11
11
|
своей темы. Разметка и поведение компонентов одни и те же, а стилистика
|
|
12
12
|
подбирается под проект: цвет, нейтрали, скругления, плотность, тени и шрифт
|
|
13
13
|
задаются CSS-переменными.
|
|
@@ -17,7 +17,7 @@ UI-kit на Vue 3 со сменными темами оформления, св
|
|
|
17
17
|
```bash
|
|
18
18
|
npm install @krometra/ui-kit
|
|
19
19
|
# или из репозитория (скрипт `prepare` собирает `dist/`)
|
|
20
|
-
npm install github:krometra/ui-kit#v0.
|
|
20
|
+
npm install github:krometra/ui-kit#v0.8.0
|
|
21
21
|
```
|
|
22
22
|
|
|
23
23
|
Публикация в npm происходит по тегу `v*`, если задан секрет `NPM_TOKEN`.
|
|
@@ -71,15 +71,19 @@ const stop = applyTheme({ scheme: 'system' }) // следовать з
|
|
|
71
71
|
|
|
72
72
|
| Ось | Значения |
|
|
73
73
|
|---|---|
|
|
74
|
-
| `preset` | `default`, `scanflow`, `slate`, `ocean`, `forest`, `violet`, `amber`, `rose`, `mono` |
|
|
74
|
+
| `preset` | `default`, `scanflow`, `slate`, `ocean`, `forest`, `violet`, `amber`, `rose`, `mono`, `blocky`, `bordeaux` |
|
|
75
75
|
| `scheme` | `light`, `dark`, `system` |
|
|
76
76
|
| `neutral` | `cool`, `warm`, `plain` |
|
|
77
|
-
| `radius` | `sharp`, `subtle`, `default`, `soft`, `pill` |
|
|
77
|
+
| `radius` | `square`, `sharp`, `subtle`, `default`, `soft`, `pill` |
|
|
78
78
|
| `density` | `compact`, `default`, `comfortable` |
|
|
79
|
-
| `elevation` | `flat`, `default`, `lifted` |
|
|
80
|
-
| `font` | `system`, `grotesk`, `serif`, `mono` или своя строка |
|
|
79
|
+
| `elevation` | `flat`, `default`, `lifted`, `hard` |
|
|
80
|
+
| `font` | `system`, `grotesk`, `serif`, `mono`, `rounded` или своя строка |
|
|
81
81
|
| `bg`, `surface`, `text`, `textMuted`, `textFaint` | свой цвет фона, поверхности и текста поверх нейтральной палитры (hex) |
|
|
82
82
|
|
|
83
|
+
Пресет может принести свои скругления, плотность, тени и шрифт: `blocky` сразу
|
|
84
|
+
включает `radius: 'square'`, `elevation: 'hard'` и `font: 'rounded'`. Ось,
|
|
85
|
+
заданная в теме явно, важнее пресета.
|
|
86
|
+
|
|
83
87
|
Не заданные оси наследуются из `tokens.css`, поэтому частичная тема — обычный
|
|
84
88
|
способ настройки. `applyTheme` выставляет `data-k-scheme` и `color-scheme` на
|
|
85
89
|
`<html>` и возвращает функцию отката; при `scheme: 'system'` она же снимает
|
|
@@ -187,6 +191,25 @@ yarn tokens # перегенерировать src/tokens.css из theme.j
|
|
|
187
191
|
Витрина живёт в `demo/Showcase.vue` и служит и документацией, и площадкой для
|
|
188
192
|
визуальной проверки при изменении токенов.
|
|
189
193
|
|
|
194
|
+
## Что изменилось в 0.8.0
|
|
195
|
+
|
|
196
|
+
- Тема `bordeaux` - бордовый акцент на тёплом розовато-сером фоне, свои
|
|
197
|
+
зелёный, синий и красный статусов и шрифт Golos Text (подключается в
|
|
198
|
+
приложении, иначе - системный), в светлой и тёмной схеме.
|
|
199
|
+
- Пресет может задать `accentOverrides` и `semanticOverrides` по схемам: точный
|
|
200
|
+
акцент и цвета статусов вместо вычисленных. Остальные пресеты не изменились.
|
|
201
|
+
|
|
202
|
+
## Что изменилось в 0.7.0
|
|
203
|
+
|
|
204
|
+
- Тема `blocky` - мультяшная «блочная»: травяной акцент, земляные нейтрали,
|
|
205
|
+
прямые углы и жёсткие тени без размытия, в светлой и тёмной схеме.
|
|
206
|
+
- Новые значения осей: `radius: 'square'` (без скруглений), `elevation: 'hard'`
|
|
207
|
+
(тень-ступенька), `font: 'rounded'` (скруглённый шрифт; в Chromium нужен
|
|
208
|
+
подключённый Nunito, `ui-rounded` понимает только Safari).
|
|
209
|
+
- Пресет может задавать `radius`, `density`, `elevation` и `font`; ось, заданная
|
|
210
|
+
в теме явно, важнее. Существующие пресеты эти оси не задают и не изменились.
|
|
211
|
+
- Витрина: выбор пресета подтягивает его оси в конструктор.
|
|
212
|
+
|
|
190
213
|
## Что изменилось в 0.6.1
|
|
191
214
|
|
|
192
215
|
- `KInput`: `size="sm"` - компактное поле внутри строки текста или таблицы,
|
package/dist/ui-kit.js
CHANGED
|
@@ -14993,6 +14993,115 @@ var Uy = /*#__PURE__*/ M({
|
|
|
14993
14993
|
accentHover: "#000000",
|
|
14994
14994
|
accentSoft: "#f4f4f5",
|
|
14995
14995
|
neutral: "plain"
|
|
14996
|
+
},
|
|
14997
|
+
bordeaux: {
|
|
14998
|
+
label: "Bordeaux",
|
|
14999
|
+
accent: "#8a3a48",
|
|
15000
|
+
accentHover: "#73303c",
|
|
15001
|
+
accentSoft: "#f3e6e8",
|
|
15002
|
+
neutral: "warm",
|
|
15003
|
+
font: "'Golos Text', -apple-system, 'Segoe UI', Roboto, sans-serif",
|
|
15004
|
+
accentOverrides: { dark: {
|
|
15005
|
+
accent: "#e3929e",
|
|
15006
|
+
accentHover: "#eaa9b3",
|
|
15007
|
+
accentSoft: "#33242a"
|
|
15008
|
+
} },
|
|
15009
|
+
semanticOverrides: {
|
|
15010
|
+
light: {
|
|
15011
|
+
success: {
|
|
15012
|
+
base: "#2c7656",
|
|
15013
|
+
hover: "#235f45",
|
|
15014
|
+
soft: "#e3f1ea",
|
|
15015
|
+
strong: "#2c7656"
|
|
15016
|
+
},
|
|
15017
|
+
info: {
|
|
15018
|
+
base: "#3b6286",
|
|
15019
|
+
hover: "#2f4f6c",
|
|
15020
|
+
soft: "#e5edf5",
|
|
15021
|
+
strong: "#3b6286"
|
|
15022
|
+
},
|
|
15023
|
+
danger: {
|
|
15024
|
+
base: "#b03a37",
|
|
15025
|
+
hover: "#922f2d",
|
|
15026
|
+
soft: "#fbe8e6",
|
|
15027
|
+
strong: "#b03a37"
|
|
15028
|
+
}
|
|
15029
|
+
},
|
|
15030
|
+
dark: {
|
|
15031
|
+
success: {
|
|
15032
|
+
base: "#72c9a2",
|
|
15033
|
+
hover: "#8fd6b6",
|
|
15034
|
+
soft: "#1b3228",
|
|
15035
|
+
strong: "#72c9a2"
|
|
15036
|
+
},
|
|
15037
|
+
info: {
|
|
15038
|
+
base: "#94b8db",
|
|
15039
|
+
hover: "#adc9e4",
|
|
15040
|
+
soft: "#1c2936",
|
|
15041
|
+
strong: "#94b8db"
|
|
15042
|
+
},
|
|
15043
|
+
danger: {
|
|
15044
|
+
base: "#f08d83",
|
|
15045
|
+
hover: "#f4a69e",
|
|
15046
|
+
soft: "#3a2220",
|
|
15047
|
+
strong: "#f08d83"
|
|
15048
|
+
}
|
|
15049
|
+
}
|
|
15050
|
+
},
|
|
15051
|
+
neutralOverrides: {
|
|
15052
|
+
light: {
|
|
15053
|
+
bg: "#f6f4f4",
|
|
15054
|
+
surface: "#ffffff",
|
|
15055
|
+
surfaceMuted: "#faf8f8",
|
|
15056
|
+
border: "#e3dcdd",
|
|
15057
|
+
borderStrong: "#cdc3c4",
|
|
15058
|
+
text: "#1e2327",
|
|
15059
|
+
textMuted: "#5f666c",
|
|
15060
|
+
textFaint: "#959ca1"
|
|
15061
|
+
},
|
|
15062
|
+
dark: {
|
|
15063
|
+
bg: "#15181b",
|
|
15064
|
+
surface: "#1d2125",
|
|
15065
|
+
surfaceMuted: "#24292e",
|
|
15066
|
+
border: "#30353a",
|
|
15067
|
+
borderStrong: "#454b52",
|
|
15068
|
+
text: "#ebe7e7",
|
|
15069
|
+
textMuted: "#a3a9ae",
|
|
15070
|
+
textFaint: "#737a80"
|
|
15071
|
+
}
|
|
15072
|
+
}
|
|
15073
|
+
},
|
|
15074
|
+
blocky: {
|
|
15075
|
+
label: "Blocky",
|
|
15076
|
+
accent: "#4f8a25",
|
|
15077
|
+
accentHover: "#3f711c",
|
|
15078
|
+
accentSoft: "#e8f3dc",
|
|
15079
|
+
neutral: "warm",
|
|
15080
|
+
radius: "square",
|
|
15081
|
+
elevation: "hard",
|
|
15082
|
+
font: "rounded",
|
|
15083
|
+
neutralOverrides: {
|
|
15084
|
+
light: {
|
|
15085
|
+
bg: "#e7e1d3",
|
|
15086
|
+
surface: "#fbf8f1",
|
|
15087
|
+
surfaceMuted: "#f1ebdf",
|
|
15088
|
+
border: "#cdc3ae",
|
|
15089
|
+
borderStrong: "#8a7a5c",
|
|
15090
|
+
text: "#2b2418",
|
|
15091
|
+
textMuted: "#675a43",
|
|
15092
|
+
textFaint: "#9a8c72"
|
|
15093
|
+
},
|
|
15094
|
+
dark: {
|
|
15095
|
+
bg: "#1b1814",
|
|
15096
|
+
surface: "#27231d",
|
|
15097
|
+
surfaceMuted: "#302b24",
|
|
15098
|
+
border: "#443d32",
|
|
15099
|
+
borderStrong: "#6b5f4c",
|
|
15100
|
+
text: "#efe8da",
|
|
15101
|
+
textMuted: "#b2a58c",
|
|
15102
|
+
textFaint: "#7c715f"
|
|
15103
|
+
}
|
|
15104
|
+
}
|
|
14996
15105
|
}
|
|
14997
15106
|
}, Ky = {
|
|
14998
15107
|
cool: {
|
|
@@ -15135,6 +15244,11 @@ var Uy = /*#__PURE__*/ M({
|
|
|
15135
15244
|
sm: "12px",
|
|
15136
15245
|
md: "16px",
|
|
15137
15246
|
lg: "28px"
|
|
15247
|
+
},
|
|
15248
|
+
square: {
|
|
15249
|
+
sm: "0px",
|
|
15250
|
+
md: "0px",
|
|
15251
|
+
lg: "0px"
|
|
15138
15252
|
}
|
|
15139
15253
|
}, Yy = {
|
|
15140
15254
|
compact: {
|
|
@@ -15188,12 +15302,25 @@ var Uy = /*#__PURE__*/ M({
|
|
|
15188
15302
|
md: "0 8px 24px rgba(0, 0, 0, 0.55)",
|
|
15189
15303
|
lg: "0 24px 60px rgba(0, 0, 0, 0.7)"
|
|
15190
15304
|
}
|
|
15305
|
+
},
|
|
15306
|
+
hard: {
|
|
15307
|
+
light: {
|
|
15308
|
+
sm: "0 3px 0 rgba(43, 36, 24, 0.28)",
|
|
15309
|
+
md: "0 4px 0 rgba(43, 36, 24, 0.16)",
|
|
15310
|
+
lg: "0 8px 0 rgba(43, 36, 24, 0.22)"
|
|
15311
|
+
},
|
|
15312
|
+
dark: {
|
|
15313
|
+
sm: "0 3px 0 rgba(0, 0, 0, 0.55)",
|
|
15314
|
+
md: "0 4px 0 rgba(0, 0, 0, 0.45)",
|
|
15315
|
+
lg: "0 8px 0 rgba(0, 0, 0, 0.6)"
|
|
15316
|
+
}
|
|
15191
15317
|
}
|
|
15192
15318
|
}, Zy = {
|
|
15193
15319
|
system: "-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif",
|
|
15194
15320
|
grotesk: "'Inter', 'Segoe UI', system-ui, sans-serif",
|
|
15195
15321
|
serif: "'Georgia', 'Times New Roman', serif",
|
|
15196
|
-
mono: "ui-monospace, SFMono-Regular, 'SF Mono', Menlo, monospace"
|
|
15322
|
+
mono: "ui-monospace, SFMono-Regular, 'SF Mono', Menlo, monospace",
|
|
15323
|
+
rounded: "ui-rounded, 'SF Pro Rounded', 'Nunito', 'Varela Round', 'Segoe UI', system-ui, sans-serif"
|
|
15197
15324
|
};
|
|
15198
15325
|
function Qy(e = "light") {
|
|
15199
15326
|
return e === "system" ? typeof window > "u" || !window.matchMedia ? "light" : window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light" : e === "dark" ? "dark" : "light";
|
|
@@ -15207,11 +15334,11 @@ function $y(e = {}) {
|
|
|
15207
15334
|
...t.text ? { text: t.text } : {},
|
|
15208
15335
|
...t.textMuted ? { textMuted: t.textMuted } : {},
|
|
15209
15336
|
...t.textFaint ? { textFaint: t.textFaint } : {}
|
|
15210
|
-
}, o = Jy[t.radius] ?? Jy.default, s = Yy[t.density] ?? Yy.default, c = (Xy[t.elevation] ?? Xy.default)[n], l =
|
|
15211
|
-
"--k-primary":
|
|
15212
|
-
"--k-primary-hover": t.accentHover ?? (r ? ob(
|
|
15213
|
-
"--k-primary-soft": t.accentSoft ?? (r ? sb(
|
|
15214
|
-
"--k-on-primary": cb(
|
|
15337
|
+
}, o = Jy[t.radius ?? i.radius] ?? Jy.default, s = Yy[t.density ?? i.density] ?? Yy.default, c = (Xy[t.elevation ?? i.elevation] ?? Xy.default)[n], l = t.font ?? i.font, u = Zy[l] ?? l ?? Zy.system, d = t.accent ? null : i.accentOverrides?.[n], f = t.accent ?? i.accent, p = d?.accent ?? (r ? ob(f, .12) : f), m = {
|
|
15338
|
+
"--k-primary": p,
|
|
15339
|
+
"--k-primary-hover": t.accentHover ?? d?.accentHover ?? (r ? ob(p, .14) : t.accent ? ab(p, -.12) : i.accentHover),
|
|
15340
|
+
"--k-primary-soft": t.accentSoft ?? d?.accentSoft ?? (r ? sb(p, a.surface, .22) : t.accent ? ob(p, .92) : i.accentSoft),
|
|
15341
|
+
"--k-on-primary": cb(p),
|
|
15215
15342
|
"--k-bg": a.bg,
|
|
15216
15343
|
"--k-surface": a.surface,
|
|
15217
15344
|
"--k-surface-muted": a.surfaceMuted,
|
|
@@ -15223,7 +15350,7 @@ function $y(e = {}) {
|
|
|
15223
15350
|
"--k-overlay": r ? "rgba(0, 0, 0, 0.6)" : "rgba(15, 23, 42, 0.35)",
|
|
15224
15351
|
"--k-tooltip-bg": r ? a.text : "#172033",
|
|
15225
15352
|
"--k-tooltip-text": r ? a.bg : "#ffffff",
|
|
15226
|
-
"--k-selection": sb(
|
|
15353
|
+
"--k-selection": sb(p, a.surface, r ? .4 : .2),
|
|
15227
15354
|
"--k-radius-sm": o.sm,
|
|
15228
15355
|
"--k-radius": o.md,
|
|
15229
15356
|
"--k-radius-lg": o.lg,
|
|
@@ -15233,10 +15360,13 @@ function $y(e = {}) {
|
|
|
15233
15360
|
"--k-shadow-sm": c.sm,
|
|
15234
15361
|
"--k-shadow-md": c.md,
|
|
15235
15362
|
"--k-shadow-lg": c.lg,
|
|
15236
|
-
"--k-font":
|
|
15363
|
+
"--k-font": u
|
|
15364
|
+
}, h = {
|
|
15365
|
+
...qy[n],
|
|
15366
|
+
...i.semanticOverrides?.[n]
|
|
15237
15367
|
};
|
|
15238
|
-
for (let [e, t] of Object.entries(
|
|
15239
|
-
return
|
|
15368
|
+
for (let [e, t] of Object.entries(h)) m[`--k-${e}`] = t.base, m[`--k-${e}-hover`] = t.hover, m[`--k-${e}-soft`] = t.soft ?? sb(t.base, a.surface, .18), m[`--k-${e}-strong`] = t.strong, m[`--k-on-${e}`] = cb(t.base);
|
|
15369
|
+
return m;
|
|
15240
15370
|
}
|
|
15241
15371
|
function eb(e = {}, t = null) {
|
|
15242
15372
|
let n = t ?? (typeof document < "u" ? document.documentElement : null);
|