@xemahq/ui-kernel 0.18.1 → 0.19.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.
@@ -14,6 +14,9 @@ export interface AsyncComboboxProps<T> {
14
14
  onSelect: (item: T) => void;
15
15
  disabled?: boolean;
16
16
  triggerClassName?: string;
17
+ onCreate?: (query: string) => void | Promise<void>;
18
+ createLabel?: (query: string) => string;
19
+ canCreate?: (query: string) => boolean;
17
20
  }
18
- export declare function AsyncCombobox<T>({ queryKeyPrefix, value, displayValue, placeholder, searchPlaceholder, emptyMessage, onSearch, minSearchLength, debounceMs, renderItem, getItemKey, onSelect, disabled, triggerClassName, }: Readonly<AsyncComboboxProps<T>>): import("react").JSX.Element;
21
+ export declare function AsyncCombobox<T>({ queryKeyPrefix, value, displayValue, placeholder, searchPlaceholder, emptyMessage, onSearch, minSearchLength, debounceMs, renderItem, getItemKey, onSelect, disabled, triggerClassName, onCreate, createLabel, canCreate, }: Readonly<AsyncComboboxProps<T>>): import("react").JSX.Element;
19
22
  //# sourceMappingURL=async-combobox.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"async-combobox.d.ts","sourceRoot":"","sources":["../../../src/ui/primitives/async-combobox.tsx"],"names":[],"mappings":"AAEA,OAAO,EAA+B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAQpE,MAAM,WAAW,kBAAkB,CAAC,CAAC;IAEnC,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IAEhB,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC;IAOlE,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,SAAS,CAAC;IAEnC,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,CAAC;IAEhC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;IAE5B,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAUD,wBAAgB,aAAa,CAAC,CAAC,EAAE,EAC/B,cAA0B,EAC1B,KAAK,EACL,YAAY,EACZ,WAAuB,EACvB,iBAA6B,EAC7B,YAAiC,EACjC,QAAQ,EACR,eAAmB,EACnB,UAAgB,EAChB,UAAU,EACV,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,gBAAgB,GACjB,EAAE,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,+BAgHjC"}
1
+ {"version":3,"file":"async-combobox.d.ts","sourceRoot":"","sources":["../../../src/ui/primitives/async-combobox.tsx"],"names":[],"mappings":"AAEA,OAAO,EAA+B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAQpE,MAAM,WAAW,kBAAkB,CAAC,CAAC;IAEnC,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IAEhB,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC;IAOlE,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,SAAS,CAAC;IAEnC,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,CAAC;IAEhC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;IAE5B,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAmB1B,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAKnD,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAOxC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;CACxC;AAgBD,wBAAgB,aAAa,CAAC,CAAC,EAAE,EAC/B,cAA0B,EAC1B,KAAK,EACL,YAAY,EACZ,WAAuB,EACvB,iBAA6B,EAC7B,YAAiC,EACjC,QAAQ,EACR,eAAmB,EACnB,UAAgB,EAChB,UAAU,EACV,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,gBAAgB,EAChB,QAAQ,EACR,WAAW,EACX,SAAS,GACV,EAAE,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,+BA8JjC"}
@@ -1,15 +1,16 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useQuery } from '@tanstack/react-query';
3
- import { ChevronsUpDown, Loader2, Search } from 'lucide-react';
3
+ import { ChevronsUpDown, Loader2, Plus, Search } from 'lucide-react';
4
4
  import { useEffect, useRef, useState } from 'react';
5
5
  import { cn } from '../cn';
6
6
  import { Button } from './button';
7
7
  import { Input } from './input';
8
8
  import { Popover, PopoverContent, PopoverTrigger } from './popover';
9
9
  import { useDebouncedValue } from '../hooks/use-debounced-value';
10
- export function AsyncCombobox({ queryKeyPrefix = 'default', value, displayValue, placeholder = 'Select…', searchPlaceholder = 'Search…', emptyMessage = 'No results found', onSearch, minSearchLength = 0, debounceMs = 300, renderItem, getItemKey, onSelect, disabled, triggerClassName, }) {
10
+ export function AsyncCombobox({ queryKeyPrefix = 'default', value, displayValue, placeholder = 'Select…', searchPlaceholder = 'Search…', emptyMessage = 'No results found', onSearch, minSearchLength = 0, debounceMs = 300, renderItem, getItemKey, onSelect, disabled, triggerClassName, onCreate, createLabel, canCreate, }) {
11
11
  const [open, setOpen] = useState(false);
12
12
  const [search, setSearch] = useState('');
13
+ const [creating, setCreating] = useState(false);
13
14
  const inputRef = useRef(null);
14
15
  const debouncedSearch = useDebouncedValue(search, debounceMs);
15
16
  const searchEnabled = open && debouncedSearch.length >= minSearchLength;
@@ -25,17 +26,36 @@ export function AsyncCombobox({ queryKeyPrefix = 'default', value, displayValue,
25
26
  return () => clearTimeout(timer);
26
27
  }
27
28
  setSearch('');
29
+ setCreating(false);
28
30
  return undefined;
29
31
  }, [open]);
30
32
  const handleSelect = (item) => {
31
33
  onSelect(item);
32
34
  setOpen(false);
33
35
  };
36
+ const createQuery = search.trim();
37
+ const showCreateRow = onCreate !== undefined &&
38
+ !isLoading &&
39
+ !creating &&
40
+ (canCreate?.(createQuery) ?? createQuery.length > 0);
41
+ const handleCreate = async () => {
42
+ if (onCreate === undefined || creating) {
43
+ return;
44
+ }
45
+ setCreating(true);
46
+ try {
47
+ await onCreate(createQuery);
48
+ setOpen(false);
49
+ }
50
+ finally {
51
+ setCreating(false);
52
+ }
53
+ };
34
54
  const showTypeToSearchHint = !isLoading &&
35
55
  minSearchLength > 0 &&
36
56
  debouncedSearch.length < minSearchLength;
37
- const showEmptyMessage = !isLoading && searchEnabled && results.length === 0;
57
+ const showEmptyMessage = !isLoading && searchEnabled && results.length === 0 && !showCreateRow;
38
58
  return (_jsxs(Popover, { open: open, onOpenChange: setOpen, children: [_jsx(PopoverTrigger, { asChild: true, children: _jsxs(Button, { variant: "outline", role: "combobox", "aria-expanded": open, disabled: disabled, className: cn('w-full justify-between font-normal', !value && 'text-ink-3', triggerClassName), children: [_jsx("span", { className: "truncate", children: value ? (displayValue ?? placeholder) : placeholder }), _jsx(ChevronsUpDown, { className: "ml-2 h-4 w-4 shrink-0 opacity-50" })] }) }), _jsxs(PopoverContent, { className: "w-[--radix-popover-trigger-width] min-w-[18rem] p-0", align: "start", onOpenAutoFocus: (e) => e.preventDefault(), children: [_jsxs("div", { className: "relative border-b", children: [_jsx(Search, { className: "absolute left-2.5 top-1/2 -translate-y-1/2 h-4 w-4 text-ink-3" }), _jsx(Input, { ref: inputRef, value: search, onChange: (e) => setSearch(e.target.value), placeholder: searchPlaceholder, className: "h-9 text-body-1 pl-8 border-0 rounded-none focus-visible:ring-0 focus-visible:ring-offset-0" })] }), _jsx("div", { className: "max-h-80 overflow-y-auto overscroll-contain", children: _jsxs("div", { className: "p-1", children: [isLoading && (_jsx("div", { className: "flex items-center justify-center py-4", children: _jsx(Loader2, { className: "h-4 w-4 animate-spin text-ink-3" }) })), showTypeToSearchHint && (_jsxs("p", { className: "text-body-1 text-ink-3 text-center py-4", children: ["Type ", minSearchLength, "+ characters to search"] })), showEmptyMessage && (_jsx("p", { className: "text-body-1 text-ink-3 text-center py-4", children: emptyMessage })), !isLoading &&
39
- results.map((item) => (_jsx("button", { type: "button", className: "w-full text-left text-body-1 px-2 py-1.5 rounded hover:bg-paper-elev transition-colors flex items-center gap-2", onClick: () => handleSelect(item), children: renderItem(item) }, getItemKey(item))))] }) })] })] }));
59
+ results.map((item) => (_jsx("button", { type: "button", className: "w-full text-left text-body-1 px-2 py-1.5 rounded hover:bg-paper-elev transition-colors flex items-center gap-2", onClick: () => handleSelect(item), children: renderItem(item) }, getItemKey(item)))), creating && (_jsxs("div", { className: "flex items-center gap-2 px-2 py-1.5 text-body-1 text-ink-3", children: [_jsx(Loader2, { className: "h-3.5 w-3.5 shrink-0 animate-spin" }), _jsxs("span", { className: "truncate", children: ["Creating \u201C", createQuery, "\u201D\u2026"] })] })), showCreateRow && (_jsxs("button", { type: "button", className: "w-full text-left text-body-1 px-2 py-1.5 rounded hover:bg-paper-elev transition-colors flex items-center gap-2", onClick: () => void handleCreate(), children: [_jsx(Plus, { className: "h-3.5 w-3.5 shrink-0 text-ink-3" }), _jsx("span", { className: "truncate", children: createLabel?.(createQuery) ?? `Create “${createQuery}”` })] }))] }) })] })] }));
40
60
  }
41
61
  //# sourceMappingURL=async-combobox.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"async-combobox.js","sourceRoot":"","sources":["../../../src/ui/primitives/async-combobox.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"async-combobox.js","sourceRoot":"","sources":["../../../src/ui/primitives/async-combobox.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xemahq/ui-kernel",
3
- "version": "0.18.1",
3
+ "version": "0.19.0",
4
4
  "type": "module",
5
5
  "sideEffects": false,
6
6
  "description": "Host-framework-agnostic UI kernel for the Xema OS. Defines the SystemBus orchestration contract (capability.invoke, cross-biome intents, command palette, xema:// deeplinks, window manager) AND the biome-host contract surface (FrontendBiome/FrontendBiomeFactory, HostBridge, the singleton biomeRegistry, session contributions) that every frontend biome composes against. No Vite, Next.js, or React-Router — React itself IS allowed as the shared component model (the contracts traffic in ReactNode/ComponentType and a React context). Concrete host adapters (router/auth/toast wiring) live in separate packages that consume this kernel. The SystemBus is pure orchestration: it never authorizes, the backend capability-router enforces all policy.",
@@ -74,7 +74,7 @@
74
74
  "@types/node": "25.2.3",
75
75
  "@types/react": "^18.3.30",
76
76
  "@types/react-dom": "^18.3.7",
77
- "@xemahq/kernel-contracts": "^26.0.0",
77
+ "@xemahq/kernel-contracts": "^29.2.0",
78
78
  "prettier": "3.6.2",
79
79
  "react": "^18.3.1",
80
80
  "react-dom": "^18.3.1",