@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 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 KeenMate web components read `--base-*` live — so they agreed
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
- KeenMate's CSS **foundation** — descended from [Yahoo's Pure CSS](https://purecss.io/) and extended into a
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 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-*`
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/KeenMate/pure-admin-themes), so the same CLI and
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 © KeenMate. The grid is derived from [Pure](https://purecss.io/) (Yahoo!, BSD).
213
+ MIT © Keenmate. The grid is derived from [Pure](https://purecss.io/) (Yahoo!, BSD).
@@ -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(--pc-sidebar-text, var(--base-text-color-1));
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(--pc-sidebar-text, var(--base-text-color-1));
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.0",
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.",
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": "KeenMate",
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/KeenMate/pure-css.git"
70
+ "url": "git+https://github.com/Keenmate/pure-css.git"
71
71
  },
72
72
  "bugs": {
73
- "url": "https://github.com/KeenMate/pure-css/issues"
73
+ "url": "https://github.com/Keenmate/pure-css/issues"
74
74
  },
75
- "homepage": "https://github.com/KeenMate/pure-css#readme",
75
+ "homepage": "https://github.com/Keenmate/pure-css#readme",
76
76
  "publishConfig": {
77
77
  "access": "public"
78
78
  },
@@ -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
- color: var(--pc-sidebar-text, var(--base-text-color-1));
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
- color: var(--pc-sidebar-text, var(--base-text-color-1));
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
 
@@ -1,6 +1,6 @@
1
1
  // @keenmate/pure-css — full foundation bundle
2
2
  // ============================================================================
3
- // The KeenMate CSS foundation, extracted from @keenmate/pure-admin-core so it
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.