@keenmate/pure-css 1.0.0 → 1.0.1
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/CHANGELOG.md +16 -1
- package/README.md +10 -10
- package/dist/css/pure-css.css +2 -2
- package/package.json +6 -6
- package/src/scss/_sidebar.scss +14 -2
- package/src/scss/pure-css.scss +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,21 @@
|
|
|
3
3
|
All notable changes to `@keenmate/pure-css` are documented here. Format based on
|
|
4
4
|
[Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
|
5
5
|
|
|
6
|
+
## [1.0.1] — 2026-09-13 [PUBLISHED]
|
|
7
|
+
|
|
8
|
+
### Fixed
|
|
9
|
+
|
|
10
|
+
- **Sidebar type-and-go search text was invisible on themes with a
|
|
11
|
+
mode-independent sidebar (e.g. express light).** The framed search box
|
|
12
|
+
(`.pc-sidebar__search`) sits on the **input** surface (`--base-input-bg`), but
|
|
13
|
+
its field text and its `:hover` colour used `--pc-sidebar-text` — a token tuned
|
|
14
|
+
for the **sidebar** surface. When a theme keeps the sidebar one colour across
|
|
15
|
+
modes (express: always-black sidebar → `--pc-sidebar-text: #fff`), that white
|
|
16
|
+
text landed on the light input background and vanished (white-on-white). Both
|
|
17
|
+
now use `--base-input-color`, which is emitted per-mode alongside
|
|
18
|
+
`--base-input-bg`, so the text/background pair is always legible. Affects
|
|
19
|
+
`.pc-sidebar__search-field` and `.pc-sidebar__search:hover`.
|
|
20
|
+
|
|
6
21
|
## [1.0.0] — 2026-09-12 [PUBLISHED]
|
|
7
22
|
|
|
8
23
|
The **first stable release** — the 1.0.0-rc series culminates here. Two additive
|
|
@@ -138,7 +153,7 @@ pure-css mirrors it and a drift guard keeps the two honest.
|
|
|
138
153
|
The **shared theming knob** release. Before rc07 the same visual token (a tooltip
|
|
139
154
|
background, an input border, a dropdown surface) was produced *twice and
|
|
140
155
|
independently* — pure-admin's `--pc-*` component tokens were baked compile-time
|
|
141
|
-
literals, while the
|
|
156
|
+
literals, while the Keenmate web components read `--base-*` live — so they agreed
|
|
142
157
|
only by coincidence and diverged the instant a theme retuned `--base-*` at
|
|
143
158
|
runtime (every dual-mode theme does exactly this at `.pc-mode-dark`). rc07 makes
|
|
144
159
|
`--base-*` the single runtime knob: override one namespace and pure-admin
|
package/README.md
CHANGED
|
@@ -1,27 +1,27 @@
|
|
|
1
1
|
# @keenmate/pure-css
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Keenmate's CSS **foundation** — descended from [Yahoo's Pure CSS](https://purecss.io/) and extended into a
|
|
4
4
|
more robust, themeable layer for real apps. One small, dependency-free package gives you the
|
|
5
5
|
**`--base-*` theming contract** (one block of custom properties re-themes everything at once), a
|
|
6
6
|
modern **flexbox grid** (`.pc-row` / `.pc-col`, container-query responsive — replacing Pure's float
|
|
7
7
|
grid), a set of **utility classes**, and an optional **app shell + JS runtime** (in the
|
|
8
8
|
`pure-css.css` bundle).
|
|
9
9
|
|
|
10
|
-
It's the shared layer the whole
|
|
11
|
-
[`@keenmate/pure-admin-core`](https://github.com/
|
|
12
|
-
top of it, and every
|
|
10
|
+
It's the shared layer the whole Keenmate stack agrees on:
|
|
11
|
+
[`@keenmate/pure-admin-core`](https://github.com/Keenmate/pure-admin) builds its component library on
|
|
12
|
+
top of it, and every Keenmate web/Svelte component reads its colours from the same `--base-*`
|
|
13
13
|
variables.
|
|
14
14
|
|
|
15
|
+
## What's New in 1.0.1
|
|
16
|
+
|
|
17
|
+
- **Sidebar search — type-and-go text is legible again on mode-independent sidebars** — the framed sidebar search box (`.pc-sidebar__search`) sits on the *input* surface (`--base-input-bg`), but its field text and `:hover` colour were painted with `--pc-sidebar-text`, a token tuned for the *sidebar* surface. On themes that keep the sidebar one colour across light and dark (e.g. express, whose sidebar is always black → `--pc-sidebar-text: #fff`), that white text landed on the light input background and vanished — white-on-white, so you couldn't read what you were typing. Both `.pc-sidebar__search-field` and `.pc-sidebar__search:hover` now read `--base-input-color`, which is emitted per-mode alongside `--base-input-bg`, so the field text always pairs with its own surface and stays readable in every theme.
|
|
18
|
+
|
|
15
19
|
## What's New in 1.0.0
|
|
16
20
|
|
|
17
21
|
- **Icons — a `filter` glyph and a `check` / `indeterminate` selection pair join the shared `--base-*` contract** — three more mask-friendly Lucide glyphs so every consumer paints the same affordances from one theme knob. `--base-icon-filter` (a funnel) is the "refine / narrow a list" mark, deliberately separate from `--base-icon-search` (find-by-text) so a component can show both at once. `--base-icon-check` (✓) and `--base-icon-indeterminate` (−) are the checkbox / tree-node selection pair used by web-multiselect, web-treeview and plain checkboxes — `check` means selected, `indeterminate` means a tri-state parent whose children are a mix. `indeterminate` reuses the minus shape of `collapse` by default but is its own independently-overridable token, so selection never gets entangled with disclosure (the same discipline as `add` vs `expand`). All three are authored in the canonical `@keenmate/base-css-variables` package first and mirrored into `variables/_base.scss` + the emit mixin, keeping the parity drift-guard green; consume them via `mask: var(--base-icon-check); background: currentColor`.
|
|
18
22
|
|
|
19
23
|
- **Docs — mode & variant classes belong on `<html>`, not `<body>`** — a new "Mode & variant class placement" section in the README (mirrored by a `NOTE` in `_base-css-variables.scss`) documents a subtle theming pitfall. CSS resolves a custom property's `var()` at the element that *declares* it, so derived component tokens that pure-admin-core emits once at `:root` — e.g. `--pa-btn-info-bg: var(--pc-info)` — bake in `:root`'s input value. Put a `.pc-mode-dark` / `.pa-color-*` class on a descendant like `<body>` and the override arrives too late: the derived token stays frozen at its default-mode value and role buttons or surfaces don't recolour when you switch. Applying the class to `:root` (the element that declares the tokens) makes the overrides win and everything re-resolves. The section also documents the one-frame `transition: none !important` trick to suppress a colour flash during the swap.
|
|
20
24
|
|
|
21
|
-
## What's New in 1.0.0-rc09
|
|
22
|
-
|
|
23
|
-
- **Namespace hygiene — the app shell no longer reaches into pure-admin's token namespace** — the KeenMate ecosystem is aligning its custom-property prefixes with its class prefixes: `--pc-*` / `.pc-*` belong to the pure-css foundation + app shell, `--pa-*` / `.pa-*` belong to pure-admin components. As part of that rename, pure-css's shell had a handful of incidental references to *component* tokens — `var(--pc-card-bg, …)` in the fit-flyout / navbar dropdown / resize-handle, `var(--pc-input-bg, …)` in the sidebar search, and `var(--pc-icon-chevron, …)` on the sidebar/navbar chevrons. Since those tokens are moving to `--pa-*` (pure-admin's namespace) and the foundation must not depend on pure-admin, each now reads its `--base-*` foundation value directly. Rendered output is byte-for-byte unchanged — every dropped tier already resolved to the same `--base-*` fallback.
|
|
24
|
-
|
|
25
25
|
## Why
|
|
26
26
|
|
|
27
27
|
pure-css is a **standalone foundation** you drop onto any surface — a docs site, a marketing page, a
|
|
@@ -162,7 +162,7 @@ that redeclares them, loaded *after* `base.css`:
|
|
|
162
162
|
|
|
163
163
|
Because pure-admin-core, the components and any consumer all read the same variables, that one block
|
|
164
164
|
re-themes all of them at once. This is the same model as
|
|
165
|
-
[`@keenmate/pure-admin-themes`](https://github.com/
|
|
165
|
+
[`@keenmate/pure-admin-themes`](https://github.com/Keenmate/pure-admin-themes), so the same CLI and
|
|
166
166
|
publishing infrastructure applies.
|
|
167
167
|
|
|
168
168
|
### Mode & variant class placement
|
|
@@ -210,4 +210,4 @@ One intentional difference: `utilities.scss` here `@use`s `_fonts.scss` so the g
|
|
|
210
210
|
|
|
211
211
|
## License
|
|
212
212
|
|
|
213
|
-
MIT ©
|
|
213
|
+
MIT © Keenmate. The grid is derived from [Pure](https://purecss.io/) (Yahoo!, BSD).
|
package/dist/css/pure-css.css
CHANGED
|
@@ -2446,7 +2446,7 @@ body.loaded .pc-sidebar__search {
|
|
|
2446
2446
|
}
|
|
2447
2447
|
.pc-sidebar__search:hover {
|
|
2448
2448
|
border-color: #0ea5e9;
|
|
2449
|
-
color: var(--
|
|
2449
|
+
color: var(--base-input-color);
|
|
2450
2450
|
}
|
|
2451
2451
|
.sidebar-hidden .pc-layout__sidebar--icon-collapse .pc-sidebar__search {
|
|
2452
2452
|
width: auto;
|
|
@@ -2481,7 +2481,7 @@ body.loaded .pc-sidebar__search {
|
|
|
2481
2481
|
border: none;
|
|
2482
2482
|
outline: none;
|
|
2483
2483
|
background: transparent;
|
|
2484
|
-
color: var(--
|
|
2484
|
+
color: var(--base-input-color);
|
|
2485
2485
|
font: inherit;
|
|
2486
2486
|
padding: 0;
|
|
2487
2487
|
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@keenmate/pure-css",
|
|
3
|
-
"version": "1.0.
|
|
4
|
-
"description": "The
|
|
3
|
+
"version": "1.0.1",
|
|
4
|
+
"description": "The Keenmate CSS foundation — --base-* theming contract, PureCSS grid and utility classes. Extracted from pure-admin-core so docs sites, standalone pages and every web/svelte component share one theming layer.",
|
|
5
5
|
"style": "dist/css/pure-css.css",
|
|
6
6
|
"exports": {
|
|
7
7
|
".": "./dist/css/pure-css.css",
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
"keenmate",
|
|
56
56
|
"pure-admin"
|
|
57
57
|
],
|
|
58
|
-
"author": "
|
|
58
|
+
"author": "Keenmate",
|
|
59
59
|
"license": "MIT",
|
|
60
60
|
"peerDependencies": {
|
|
61
61
|
"sass": "^1.0.0"
|
|
@@ -67,12 +67,12 @@
|
|
|
67
67
|
},
|
|
68
68
|
"repository": {
|
|
69
69
|
"type": "git",
|
|
70
|
-
"url": "git+https://github.com/
|
|
70
|
+
"url": "git+https://github.com/Keenmate/pure-css.git"
|
|
71
71
|
},
|
|
72
72
|
"bugs": {
|
|
73
|
-
"url": "https://github.com/
|
|
73
|
+
"url": "https://github.com/Keenmate/pure-css/issues"
|
|
74
74
|
},
|
|
75
|
-
"homepage": "https://github.com/
|
|
75
|
+
"homepage": "https://github.com/Keenmate/pure-css#readme",
|
|
76
76
|
"publishConfig": {
|
|
77
77
|
"access": "public"
|
|
78
78
|
},
|
package/src/scss/_sidebar.scss
CHANGED
|
@@ -221,7 +221,12 @@ body.pc-layout--sticky .pc-layout__sidebar {
|
|
|
221
221
|
// alias; inlined so the shell no longer depends on the component layer
|
|
222
222
|
// (variables/_components.scss now lives in pure-admin-core).
|
|
223
223
|
border-color: $accent-color;
|
|
224
|
-
|
|
224
|
+
// This framed box sits on the INPUT surface (--base-input-bg above), NOT
|
|
225
|
+
// the sidebar surface — so emphasise with the input text colour, not
|
|
226
|
+
// --pc-sidebar-text. In themes with a mode-independent sidebar (e.g.
|
|
227
|
+
// express: always-black sidebar → --pc-sidebar-text is white) the old
|
|
228
|
+
// sidebar-text hover went white-on-white on the light input bg.
|
|
229
|
+
color: var(--base-input-color);
|
|
225
230
|
}
|
|
226
231
|
|
|
227
232
|
// Collapsed rail ONLY (icon-collapse mode AND actually collapsed, i.e.
|
|
@@ -276,7 +281,14 @@ body.pc-layout--sticky .pc-layout__sidebar {
|
|
|
276
281
|
border: none;
|
|
277
282
|
outline: none;
|
|
278
283
|
background: transparent;
|
|
279
|
-
|
|
284
|
+
// The field shows through to the framed box's --base-input-bg surface,
|
|
285
|
+
// so its text must use the input text colour (--base-input-color), not
|
|
286
|
+
// the sidebar text colour. --pc-sidebar-text is tuned for the sidebar
|
|
287
|
+
// surface, which can be mode-independent (express: always-black sidebar
|
|
288
|
+
// → white sidebar text) and then renders white-on-white on a light
|
|
289
|
+
// input bg. --base-input-color is emitted per-mode alongside
|
|
290
|
+
// --base-input-bg, so the pair is always legible.
|
|
291
|
+
color: var(--base-input-color);
|
|
280
292
|
font: inherit;
|
|
281
293
|
padding: 0;
|
|
282
294
|
|
package/src/scss/pure-css.scss
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// @keenmate/pure-css — full foundation bundle
|
|
2
2
|
// ============================================================================
|
|
3
|
-
// The
|
|
3
|
+
// The Keenmate CSS foundation, extracted from @keenmate/pure-admin-core so it
|
|
4
4
|
// can be consumed on its own (docs sites, standalone pages, non-admin portals)
|
|
5
5
|
// and so pure-admin-core, themes and any web/svelte component share ONE
|
|
6
6
|
// theming contract: the `--base-*` (and derived `--pc-*`) custom properties.
|