@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 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.6.1
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 = Zy[t.font] ?? t.font ?? Zy.system, u = t.accent ?? i.accent, d = r ? ob(u, .12) : u, f = {
15211
- "--k-primary": d,
15212
- "--k-primary-hover": t.accentHover ?? (r ? ob(d, .14) : t.accent ? ab(d, -.12) : i.accentHover),
15213
- "--k-primary-soft": t.accentSoft ?? (r ? sb(d, a.surface, .22) : t.accent ? ob(d, .92) : i.accentSoft),
15214
- "--k-on-primary": cb(d),
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(d, a.surface, r ? .4 : .2),
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": l
15363
+ "--k-font": u
15364
+ }, h = {
15365
+ ...qy[n],
15366
+ ...i.semanticOverrides?.[n]
15237
15367
  };
15238
- for (let [e, t] of Object.entries(qy[n])) f[`--k-${e}`] = t.base, f[`--k-${e}-hover`] = t.hover, f[`--k-${e}-soft`] = t.soft ?? sb(t.base, a.surface, .18), f[`--k-${e}-strong`] = t.strong, f[`--k-on-${e}`] = cb(t.base);
15239
- return f;
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);