@kolkrabbi/kol-framework 0.10.0 → 0.10.2

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/kol-framework.css CHANGED
@@ -500,7 +500,9 @@ body {
500
500
  font-size: 12px;
501
501
  font-weight: 500;
502
502
  letter-spacing: 0.12em;
503
- text-transform: uppercase;
503
+ /* text-transform REMOVED 2026-07-30 — casing is a content-layer concern and
504
+ * components never auto-case (standing law). The label is authored as "Exit"
505
+ * at the call site; if a consumer wants EXIT they type EXIT. */
504
506
  text-decoration: none;
505
507
  cursor: pointer;
506
508
  transition: background 200ms ease, border-color 200ms ease;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kolkrabbi/kol-framework",
3
- "version": "0.10.0",
3
+ "version": "0.10.2",
4
4
  "description": "KOL app shell — sidenav, layout, theme toggle, footer, heroes + brand color layer. SideNav takes nav data as props so the tree stays app-local.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -27,7 +27,7 @@
27
27
  "app-shell"
28
28
  ],
29
29
  "dependencies": {
30
- "@kolkrabbi/kol-component": "0.14.3",
30
+ "@kolkrabbi/kol-component": "0.15.1",
31
31
  "@kolkrabbi/kol-icons": "0.8.11"
32
32
  },
33
33
  "peerDependencies": {
@@ -138,7 +138,7 @@ export default function ThemeToggle({
138
138
  /* ── DEPRECATED aliases — old chrome verbatim (0.6.x) ── */
139
139
  if (variant === 'icon') {
140
140
  return (
141
- <button {...shared} className={`kol-btn kol-btn-nav kol-btn-${size} kol-btn-icon ${className}`.trim()}>
141
+ <button {...shared} className={`kol-theme-toggle kol-theme-toggle-none kol-btn-${size} kol-btn-icon ${className}`.trim()}>
142
142
  {iconSwap(glyphSolo)}
143
143
  </button>
144
144
  )
@@ -146,8 +146,8 @@ export default function ThemeToggle({
146
146
  if (variant === 'hop' || variant === 'hop-bare') {
147
147
  const bare = variant === 'hop-bare'
148
148
  const chromeCls = bare
149
- ? 'w-full inline-flex items-center justify-start gap-2 py-1.5 px-6 kol-mono-14 bg-transparent text-emphasis transition-colors'
150
- : 'kol-btn kol-btn-primary kol-btn-md kol-mono-14 w-full justify-start gap-2'
149
+ ? 'w-full inline-flex items-center justify-start gap-2 py-1.5 px-6 kol-mono-14 bg-transparent text-emphasis'
150
+ : 'kol-theme-toggle kol-theme-toggle-subtle kol-btn-md kol-mono-14 w-full justify-start gap-2'
151
151
  return (
152
152
  <button {...shared} className={`${chromeCls} ${className}`.trim()}>
153
153
  <span className="inline-flex items-center justify-center shrink-0" aria-hidden="true">
@@ -165,7 +165,7 @@ export default function ThemeToggle({
165
165
 
166
166
  if (variant === 'flush') {
167
167
  const glyph = label ? glyphWithText : glyphSolo
168
- const cls = `inline-flex items-center gap-2 ${mono} bg-transparent text-emphasis transition-colors ${width} ${className}`
168
+ const cls = `kol-theme-toggle kol-theme-toggle-flush gap-2 ${mono} ${width} ${className}`
169
169
  return (
170
170
  <button {...shared} className={cls.replace(/\s+/g, ' ').trim()}>
171
171
  {!iconRight && iconSwap(glyph)}
@@ -176,19 +176,19 @@ export default function ThemeToggle({
176
176
  }
177
177
 
178
178
  /* variant === 'button' (default) — the padded rung. fill is the one bg
179
- * element: subtle = the grey fill (kol-btn-primary), none = the invisible
180
- * container (kol-btn-nav — quiet ink + hover wash, geometry identical). */
181
- const fillCls = fill === 'none' ? 'kol-btn-nav' : 'kol-btn-primary'
179
+ * element: subtle = the grey fill, none = the invisible container. Geometry
180
+ * identical; no hover on either — no variant carries an interactive state. */
181
+ const fillCls = fill === 'none' ? 'kol-theme-toggle-none' : 'kol-theme-toggle-subtle'
182
182
  if (!label) {
183
183
  // icon-only pins the square box per rung — geometry condition, not a variant
184
184
  return (
185
- <button {...shared} className={`kol-btn ${fillCls} kol-btn-${size} kol-btn-icon ${width} ${className}`.replace(/\s+/g, ' ').trim()}>
185
+ <button {...shared} className={`kol-theme-toggle ${fillCls} kol-btn-${size} kol-btn-icon ${width} ${className}`.replace(/\s+/g, ' ').trim()}>
186
186
  {iconSwap(glyphSolo)}
187
187
  </button>
188
188
  )
189
189
  }
190
190
  return (
191
- <button {...shared} className={`kol-btn ${fillCls} kol-btn-${size} ${mono} gap-2 ${width} ${className}`.replace(/\s+/g, ' ').trim()}>
191
+ <button {...shared} className={`kol-theme-toggle ${fillCls} kol-btn-${size} ${mono} gap-2 ${width} ${className}`.replace(/\s+/g, ' ').trim()}>
192
192
  {!iconRight && iconSwap(glyphWithText)}
193
193
  <span className={fullWidth ? 'flex-1 min-w-0 text-left' : ''}>{MODE_LABEL[shown]}</span>
194
194
  {iconRight && iconSwap(glyphWithText)}