@kolkrabbi/kol-shell 0.65.0 → 0.66.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kolkrabbi/kol-shell",
3
- "version": "0.65.0",
3
+ "version": "0.66.0",
4
4
  "private": false,
5
5
  "description": "The application shell",
6
6
  "license": "MIT",
@@ -12,7 +12,7 @@
12
12
  "./src/*": "./src/*"
13
13
  },
14
14
  "peerDependencies": {
15
- "@kolkrabbi/kol-component": ">=0.265.0",
15
+ "@kolkrabbi/kol-component": ">=0.266.0",
16
16
  "@kolkrabbi/kol-icons": ">=0.16.0",
17
17
  "@kolkrabbi/kol-theme": ">=0.165.0",
18
18
  "gsap": "^3.13.0",
@@ -20,10 +20,10 @@
20
20
  "react-dom": "^18.3.0 || ^19.0.0"
21
21
  },
22
22
  "devDependencies": {
23
- "@kolkrabbi/kol-component": "^0.265.0",
23
+ "@kolkrabbi/kol-component": "^0.266.0",
24
24
  "@kolkrabbi/kol-icons": "^0.39.0",
25
- "@kolkrabbi/kol-framework": "^0.49.0",
26
- "@kolkrabbi/kol-theme": "^0.174.0"
25
+ "@kolkrabbi/kol-theme": "^0.174.0",
26
+ "@kolkrabbi/kol-framework": "^0.50.0"
27
27
  },
28
28
  "files": [
29
29
  "src",
package/src/AppHub.jsx CHANGED
@@ -3,9 +3,9 @@ import AppShell from './AppShell.jsx'
3
3
  import HubHome from './HubHome.jsx'
4
4
  import HubSettings from './HubSettings.jsx'
5
5
  import HubDev from './HubDev.jsx'
6
- import { ShortcutsOverlay } from '@kolkrabbi/kol-component'
6
+ import { CommandOverlay } from '@kolkrabbi/kol-component'
7
7
 
8
- /* taxonomy-ok: organism — nests AppShell / HubHome / HubSettings / ShortcutsOverlay (relative) */
8
+ /* taxonomy-ok: organism — nests AppShell / HubHome / HubSettings / HubDev (relative) + kol-component's CommandOverlay */
9
9
 
10
10
  /**
11
11
  * AppHub — An app's shell and hub in one. Shell + Hub in one call; the app passes its Tool as children (the app anatomy,
@@ -70,6 +70,7 @@ export default function AppHub({
70
70
  children,
71
71
  }) {
72
72
  const [sheet, setSheet] = useState(false)
73
+ const [sheetQuery, setSheetQuery] = useState('')
73
74
 
74
75
  useEffect(() => {
75
76
  if (!shortcutsKey) return undefined
@@ -122,7 +123,9 @@ export default function AppHub({
122
123
  {...shell}
123
124
  >
124
125
  {page}
125
- {sheet && <ShortcutsOverlay shortcuts={shortcuts} currentPath={currentPath} onClose={() => setSheet(false)} />}
126
+ {/* THE SHEET IS THE OVERLAY'S SHORTCUTS MODE (5.3, 2026-10-17): the whole keymap at a glance, this page's
127
+ * first, the rest under Elsewhere; typing filters, Enter runs a row */}
128
+ <CommandOverlay open={sheet} mode="shortcuts" shortcuts={shortcuts} currentPath={currentPath} query={sheetQuery} onQueryChange={setSheetQuery} onClose={() => { setSheet(false); setSheetQuery('') }} />
126
129
  </AppShell>
127
130
  )
128
131
  }
package/src/HubDev.jsx CHANGED
@@ -1,9 +1,8 @@
1
1
  import { useState } from 'react'
2
- import { PageHeader } from '@kolkrabbi/kol-component'
2
+ import { PageHeader, TabsRow } from '@kolkrabbi/kol-component'
3
3
  import PageShell from './PageShell.jsx'
4
- import TabStrip from './TabStrip.jsx'
5
4
 
6
- /* taxonomy-ok: organism — nests PageShell / TabStrip (relative) + kol-component's PageHeader */
5
+ /* taxonomy-ok: organism — nests PageShell (relative) + kol-component's PageHeader / TabsRow */
7
6
 
8
7
  const read = (key, fallback) => { try { return localStorage.getItem(key) ?? fallback } catch { return fallback } }
9
8
  const write = (key, value) => { try { localStorage.setItem(key, value) } catch { /* private mode: the tab just resets */ } }
@@ -36,7 +35,7 @@ export default function HubDev({ tabs = [], title = 'Dev', subtitle = 'Experimen
36
35
  <PageHeader size="sm" voice="mono" title={title} subtitle={subtitle} />
37
36
  {tabs.length > 1 && (
38
37
  <div className="flex flex-col gap-2 border-b border-fg-08 pb-4">
39
- <TabStrip options={tabs.map(({ value, label }) => ({ value, label }))} value={active?.value} onChange={pick} tracked />
38
+ <TabsRow look="text" tabs={tabs.map(({ value, label }) => ({ value, label }))} value={active?.value} onChange={pick} tracked />
40
39
  {active?.description && <p className="kol-helper-12 text-meta">{active.description}</p>}
41
40
  </div>
42
41
  )}
package/src/PhoneNav.jsx CHANGED
@@ -1,5 +1,5 @@
1
1
  import { useEffect, useState } from 'react'
2
- import { Button, MobileTabBar } from '@kolkrabbi/kol-component'
2
+ import { Button, TabsRow } from '@kolkrabbi/kol-component'
3
3
 
4
4
  /* taxonomy-ok: molecule — MobileTabBar + a More sheet of Buttons */
5
5
 
@@ -68,7 +68,9 @@ export default function PhoneNav({ items = [], currentPath = '/', onNavigate })
68
68
  ))}
69
69
  </div>
70
70
  )}
71
- <MobileTabBar
71
+ <TabsRow
72
+ look="stacked"
73
+ placement="phone"
72
74
  tabs={tabs}
73
75
  value={value}
74
76
  onChange={(v) => (v === MORE ? setOpen((o) => !o) : onNavigate?.(v))}
package/src/TabStrip.jsx CHANGED
@@ -1,34 +1,9 @@
1
+ import { TabsRow } from '@kolkrabbi/kol-component'
2
+
1
3
  /**
2
- * TabStrip — A row of text tabs. the flat text-tab idiom both shells use twice (ContentFilters
3
- * view-mode/layout spans, Settings tabs): `kol-helper-14`, active
4
- * `text-fg-96`, rest `text-fg-32 hover:text-fg-48`.
5
- *
6
- * No auto-casing — labels render exactly as authored (the source repos'
7
- * `text-transform: uppercase` dropped per the DS law; author "GRID" if you
8
- * want GRID). `tracked` adds the 1px letter-spacing the view-mode strips
9
- * carried.
10
- *
11
- * SINGLE-SELECT ONLY. A `Set` form for multi-select was added 2026-08-15 so the
12
- * retired ContentFilters fork could render filter values through this — and
13
- * removed the same day with it. A multi-select, handler-carrying, active/rest
14
- * chip is a `Tag`; building a second one here under another name in another
15
- * package is exactly the duplication kol-shell exists to end.
16
- *
17
- * @param {Array} props.options `[{ value, label }]`
4
+ * @deprecated 2026-10-17 — alias of kol-component's `TabsRow look="text"` (TabsStackedLayout: one tab component). Drops when nobody imports it (04-retirements.md).
5
+ * TabStrip — Old name for TabsRow's text look. Same props: `options` (`{ value, label }`) · `value` · `onChange` · `size` · `tracked` · `className` · `style`.
18
6
  */
19
- export default function TabStrip({ options = [], value, onChange, size = 14, tracked = false, className = 'gap-6', style }) {
20
- return (
21
- <div className={`flex items-center ${className}`.trim()} style={style}>
22
- {options.map((opt) => (
23
- <span
24
- key={opt.value}
25
- onClick={() => onChange?.(opt.value)}
26
- className={`kol-helper-${size} cursor-pointer select-none ${value === opt.value ? 'text-fg-96' : 'text-fg-32 hover:text-fg-48'}`}
27
- style={tracked ? { letterSpacing: 1 } : undefined}
28
- >
29
- {opt.label}
30
- </span>
31
- ))}
32
- </div>
33
- )
7
+ export default function TabStrip({ options = [], className = 'gap-6', ...rest }) {
8
+ return <TabsRow look="text" tabs={options} className={className} {...rest} />
34
9
  }