@krometra/ui-kit 0.6.1 → 0.7.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.7.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` |
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,17 @@ yarn tokens # перегенерировать src/tokens.css из theme.j
187
191
  Витрина живёт в `demo/Showcase.vue` и служит и документацией, и площадкой для
188
192
  визуальной проверки при изменении токенов.
189
193
 
194
+ ## Что изменилось в 0.7.0
195
+
196
+ - Тема `blocky` - мультяшная «блочная»: травяной акцент, земляные нейтрали,
197
+ прямые углы и жёсткие тени без размытия, в светлой и тёмной схеме.
198
+ - Новые значения осей: `radius: 'square'` (без скруглений), `elevation: 'hard'`
199
+ (тень-ступенька), `font: 'rounded'` (скруглённый шрифт; в Chromium нужен
200
+ подключённый Nunito, `ui-rounded` понимает только Safari).
201
+ - Пресет может задавать `radius`, `density`, `elevation` и `font`; ось, заданная
202
+ в теме явно, важнее. Существующие пресеты эти оси не задают и не изменились.
203
+ - Витрина: выбор пресета подтягивает его оси в конструктор.
204
+
190
205
  ## Что изменилось в 0.6.1
191
206
 
192
207
  - `KInput`: `size="sm"` - компактное поле внутри строки текста или таблицы,
package/dist/ui-kit.js CHANGED
@@ -14993,6 +14993,38 @@ var Uy = /*#__PURE__*/ M({
14993
14993
  accentHover: "#000000",
14994
14994
  accentSoft: "#f4f4f5",
14995
14995
  neutral: "plain"
14996
+ },
14997
+ blocky: {
14998
+ label: "Blocky",
14999
+ accent: "#4f8a25",
15000
+ accentHover: "#3f711c",
15001
+ accentSoft: "#e8f3dc",
15002
+ neutral: "warm",
15003
+ radius: "square",
15004
+ elevation: "hard",
15005
+ font: "rounded",
15006
+ neutralOverrides: {
15007
+ light: {
15008
+ bg: "#e7e1d3",
15009
+ surface: "#fbf8f1",
15010
+ surfaceMuted: "#f1ebdf",
15011
+ border: "#cdc3ae",
15012
+ borderStrong: "#8a7a5c",
15013
+ text: "#2b2418",
15014
+ textMuted: "#675a43",
15015
+ textFaint: "#9a8c72"
15016
+ },
15017
+ dark: {
15018
+ bg: "#1b1814",
15019
+ surface: "#27231d",
15020
+ surfaceMuted: "#302b24",
15021
+ border: "#443d32",
15022
+ borderStrong: "#6b5f4c",
15023
+ text: "#efe8da",
15024
+ textMuted: "#b2a58c",
15025
+ textFaint: "#7c715f"
15026
+ }
15027
+ }
14996
15028
  }
14997
15029
  }, Ky = {
14998
15030
  cool: {
@@ -15135,6 +15167,11 @@ var Uy = /*#__PURE__*/ M({
15135
15167
  sm: "12px",
15136
15168
  md: "16px",
15137
15169
  lg: "28px"
15170
+ },
15171
+ square: {
15172
+ sm: "0px",
15173
+ md: "0px",
15174
+ lg: "0px"
15138
15175
  }
15139
15176
  }, Yy = {
15140
15177
  compact: {
@@ -15188,12 +15225,25 @@ var Uy = /*#__PURE__*/ M({
15188
15225
  md: "0 8px 24px rgba(0, 0, 0, 0.55)",
15189
15226
  lg: "0 24px 60px rgba(0, 0, 0, 0.7)"
15190
15227
  }
15228
+ },
15229
+ hard: {
15230
+ light: {
15231
+ sm: "0 3px 0 rgba(43, 36, 24, 0.28)",
15232
+ md: "0 4px 0 rgba(43, 36, 24, 0.16)",
15233
+ lg: "0 8px 0 rgba(43, 36, 24, 0.22)"
15234
+ },
15235
+ dark: {
15236
+ sm: "0 3px 0 rgba(0, 0, 0, 0.55)",
15237
+ md: "0 4px 0 rgba(0, 0, 0, 0.45)",
15238
+ lg: "0 8px 0 rgba(0, 0, 0, 0.6)"
15239
+ }
15191
15240
  }
15192
15241
  }, Zy = {
15193
15242
  system: "-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif",
15194
15243
  grotesk: "'Inter', 'Segoe UI', system-ui, sans-serif",
15195
15244
  serif: "'Georgia', 'Times New Roman', serif",
15196
- mono: "ui-monospace, SFMono-Regular, 'SF Mono', Menlo, monospace"
15245
+ mono: "ui-monospace, SFMono-Regular, 'SF Mono', Menlo, monospace",
15246
+ rounded: "ui-rounded, 'SF Pro Rounded', 'Nunito', 'Varela Round', 'Segoe UI', system-ui, sans-serif"
15197
15247
  };
15198
15248
  function Qy(e = "light") {
15199
15249
  return e === "system" ? typeof window > "u" || !window.matchMedia ? "light" : window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light" : e === "dark" ? "dark" : "light";
@@ -15207,11 +15257,11 @@ function $y(e = {}) {
15207
15257
  ...t.text ? { text: t.text } : {},
15208
15258
  ...t.textMuted ? { textMuted: t.textMuted } : {},
15209
15259
  ...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),
15260
+ }, 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 ?? i.accent, f = r ? ob(d, .12) : d, p = {
15261
+ "--k-primary": f,
15262
+ "--k-primary-hover": t.accentHover ?? (r ? ob(f, .14) : t.accent ? ab(f, -.12) : i.accentHover),
15263
+ "--k-primary-soft": t.accentSoft ?? (r ? sb(f, a.surface, .22) : t.accent ? ob(f, .92) : i.accentSoft),
15264
+ "--k-on-primary": cb(f),
15215
15265
  "--k-bg": a.bg,
15216
15266
  "--k-surface": a.surface,
15217
15267
  "--k-surface-muted": a.surfaceMuted,
@@ -15223,7 +15273,7 @@ function $y(e = {}) {
15223
15273
  "--k-overlay": r ? "rgba(0, 0, 0, 0.6)" : "rgba(15, 23, 42, 0.35)",
15224
15274
  "--k-tooltip-bg": r ? a.text : "#172033",
15225
15275
  "--k-tooltip-text": r ? a.bg : "#ffffff",
15226
- "--k-selection": sb(d, a.surface, r ? .4 : .2),
15276
+ "--k-selection": sb(f, a.surface, r ? .4 : .2),
15227
15277
  "--k-radius-sm": o.sm,
15228
15278
  "--k-radius": o.md,
15229
15279
  "--k-radius-lg": o.lg,
@@ -15233,10 +15283,10 @@ function $y(e = {}) {
15233
15283
  "--k-shadow-sm": c.sm,
15234
15284
  "--k-shadow-md": c.md,
15235
15285
  "--k-shadow-lg": c.lg,
15236
- "--k-font": l
15286
+ "--k-font": u
15237
15287
  };
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;
15288
+ for (let [e, t] of Object.entries(qy[n])) p[`--k-${e}`] = t.base, p[`--k-${e}-hover`] = t.hover, p[`--k-${e}-soft`] = t.soft ?? sb(t.base, a.surface, .18), p[`--k-${e}-strong`] = t.strong, p[`--k-on-${e}`] = cb(t.base);
15289
+ return p;
15240
15290
  }
15241
15291
  function eb(e = {}, t = null) {
15242
15292
  let n = t ?? (typeof document < "u" ? document.documentElement : null);