@setsquare/ui 0.7.0 → 0.9.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.
Files changed (42) hide show
  1. package/CHANGELOG.md +78 -0
  2. package/README.md +7 -6
  3. package/dist/index.d.ts +1 -0
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js.map +1 -1
  6. package/dist/lib/keyshortcuts.d.ts +13 -0
  7. package/dist/lib/keyshortcuts.d.ts.map +1 -0
  8. package/dist/lib/keyshortcuts.js +21 -0
  9. package/dist/lib/keyshortcuts.js.map +1 -0
  10. package/dist/lib/rail-name.d.ts +45 -0
  11. package/dist/lib/rail-name.d.ts.map +1 -0
  12. package/dist/lib/rail-name.js +63 -0
  13. package/dist/lib/rail-name.js.map +1 -0
  14. package/dist/lib/search-match.d.ts +31 -0
  15. package/dist/lib/search-match.d.ts.map +1 -0
  16. package/dist/lib/search-match.js +82 -0
  17. package/dist/lib/search-match.js.map +1 -0
  18. package/dist/lib/search-shortcut.d.ts +16 -0
  19. package/dist/lib/search-shortcut.d.ts.map +1 -0
  20. package/dist/lib/search-shortcut.js +49 -0
  21. package/dist/lib/search-shortcut.js.map +1 -0
  22. package/dist/shell/rail.d.ts +5 -1
  23. package/dist/shell/rail.d.ts.map +1 -1
  24. package/dist/shell/rail.js +55 -2
  25. package/dist/shell/rail.js.map +1 -1
  26. package/dist/testing/index.d.ts +6 -1
  27. package/dist/testing/index.d.ts.map +1 -1
  28. package/dist/testing/index.js +14 -1
  29. package/dist/testing/index.js.map +1 -1
  30. package/dist/ui/button.d.ts +3 -2
  31. package/dist/ui/button.d.ts.map +1 -1
  32. package/dist/ui/button.js +7 -4
  33. package/dist/ui/button.js.map +1 -1
  34. package/dist/ui/search.d.ts +19 -3
  35. package/dist/ui/search.d.ts.map +1 -1
  36. package/dist/ui/search.js +55 -23
  37. package/dist/ui/search.js.map +1 -1
  38. package/dist/ui/tree.d.ts +5 -3
  39. package/dist/ui/tree.d.ts.map +1 -1
  40. package/dist/ui/tree.js +4 -2
  41. package/dist/ui/tree.js.map +1 -1
  42. package/package.json +1 -1
@@ -6,6 +6,11 @@ export interface SearchItem {
6
6
  description?: string;
7
7
  icon?: IconProp;
8
8
  href?: string;
9
+ /**
10
+ * Other words that find it: what people call it rather than its name ("mp4", "export"). Matched as well as
11
+ * the label, ranked after label matches, and never shown or read out.
12
+ */
13
+ keywords?: string[];
9
14
  }
10
15
  /** The search's own words, for the `labels` prop. */
11
16
  export interface SearchLabels {
@@ -40,6 +45,8 @@ export interface SearchTriggerProps {
40
45
  /** Icon-only, for narrow headers, named `labels.search`. */
41
46
  compact?: boolean;
42
47
  labels?: Partial<SearchLabels>;
48
+ /** Shows ⌘K and sets `aria-keyshortcuts`. Default true; false when the shortcut doesn't open this search. */
49
+ shortcut?: boolean;
43
50
  className?: string;
44
51
  }
45
52
  /**
@@ -47,7 +54,7 @@ export interface SearchTriggerProps {
47
54
  * shortcut also in `aria-keyshortcuts`. No `aria-label`: one that left out the shortcut would no longer contain
48
55
  * the visible text (2.5.3 Label in Name, as axe and the Setsquare SDK measure it).
49
56
  */
50
- export declare function SearchTrigger({ onPress, placeholder, compact, labels: given, className, }: SearchTriggerProps): import("react").JSX.Element;
57
+ export declare function SearchTrigger({ onPress, placeholder, compact, labels: given, shortcut, className, }: SearchTriggerProps): import("react").JSX.Element;
51
58
  export interface AppSearchProps {
52
59
  sections: SearchSection[];
53
60
  onAction?: (id: Key) => void;
@@ -57,8 +64,17 @@ export interface AppSearchProps {
57
64
  placeholder?: string;
58
65
  /** For the trigger and the dialog. */
59
66
  labels?: Partial<SearchLabels>;
67
+ /**
68
+ * Opens on ⌘K / Ctrl+K. Default true. One search on a page has the shortcut, the first mounted that asks;
69
+ * false gives it up, for a second search on the page.
70
+ */
71
+ shortcut?: boolean;
60
72
  className?: string;
61
73
  }
62
- /** Trigger + dialog + the ⌘K / Ctrl+K shortcut, wired together. */
63
- export declare function AppSearch({ sections, onAction, compact, defaultOpen, placeholder, labels, className, }: AppSearchProps): import("react").JSX.Element;
74
+ /**
75
+ * Trigger + dialog + the ⌘K / Ctrl+K shortcut, wired together. The shortcut is left alone when focus is in a field
76
+ * or editor, when another handler has already taken it, and in every search on the page but the one that has it
77
+ * (see `shortcut`); the trigger shows ⌘K only on that one.
78
+ */
79
+ export declare function AppSearch({ sections, onAction, compact, defaultOpen, placeholder, labels, shortcut, className, }: AppSearchProps): import("react").JSX.Element;
64
80
  //# sourceMappingURL=search.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/ui/search.tsx"],"names":[],"mappings":"AAGA,OAAO,EAcL,KAAK,GAAG,EACT,MAAM,uBAAuB,CAAC;AAK/B,OAAO,EAAc,KAAK,QAAQ,EAAE,MAAM,WAAW,CAAC;AAKtD,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AACD,qDAAqD;AACrD,MAAM,WAAW,YAAY;IAC3B,yEAAyE;IACzE,MAAM,EAAE,MAAM,CAAC;IACf,mFAAmF;IACnF,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,yDAAyD;IACzD,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,YAAY,EAAE,YAK1B,CAAC;AAEF,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,UAAU,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,OAAO,CAAC;IAChB,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,KAAK,IAAI,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;CAChC;AAED,2FAA2F;AAC3F,wBAAgB,aAAa,CAAC,EAC5B,MAAM,EACN,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,MAAM,EAAE,KAAK,GACd,EAAE,kBAAkB,+BAwFpB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,mDAAmD;IACnD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4DAA4D;IAC5D,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,EAC5B,OAAO,EACP,WAAW,EACX,OAAO,EACP,MAAM,EAAE,KAAK,EACb,SAAS,GACV,EAAE,kBAAkB,+BA6BpB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,KAAK,IAAI,CAAC;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,wCAAwC;IACxC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sCAAsC;IACtC,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,mEAAmE;AACnE,wBAAgB,SAAS,CAAC,EACxB,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,WAAmB,EACnB,WAAW,EACX,MAAM,EACN,SAAS,GACV,EAAE,cAAc,+BA8BhB"}
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/ui/search.tsx"],"names":[],"mappings":"AAGA,OAAO,EAcL,KAAK,GAAG,EACT,MAAM,uBAAuB,CAAC;AAK/B,OAAO,EAAc,KAAK,QAAQ,EAAE,MAAM,WAAW,CAAC;AAatD,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AACD,qDAAqD;AACrD,MAAM,WAAW,YAAY;IAC3B,yEAAyE;IACzE,MAAM,EAAE,MAAM,CAAC;IACf,mFAAmF;IACnF,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,yDAAyD;IACzD,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,YAAY,EAAE,YAK1B,CAAC;AAEF,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,UAAU,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,OAAO,CAAC;IAChB,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,KAAK,IAAI,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;CAChC;AAED,2FAA2F;AAC3F,wBAAgB,aAAa,CAAC,EAC5B,MAAM,EACN,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,MAAM,EAAE,KAAK,GACd,EAAE,kBAAkB,+BAmCpB;AA6FD,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,mDAAmD;IACnD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4DAA4D;IAC5D,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAC/B,6GAA6G;IAC7G,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,EAC5B,OAAO,EACP,WAAW,EACX,OAAO,EACP,MAAM,EAAE,KAAK,EACb,QAAe,EACf,SAAS,GACV,EAAE,kBAAkB,+BAqCpB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,KAAK,IAAI,CAAC;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,wCAAwC;IACxC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sCAAsC;IACtC,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAC/B;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,EACxB,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,WAAmB,EACnB,WAAW,EACX,MAAM,EACN,QAAe,EACf,SAAS,GACV,EAAE,cAAc,+BAyChB"}
package/dist/ui/search.js CHANGED
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
  import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { useEffect, useState } from 'react';
4
- import { Autocomplete, Button as RACButton, Collection, Dialog, Header, Input, Menu, MenuItem, MenuSection, Modal, ModalOverlay, SearchField, useFilter, } from 'react-aria-components';
3
+ import { useEffect, useId, useMemo, useState, useSyncExternalStore } from 'react';
4
+ import { Autocomplete, Button as RACButton, Collection, Dialog, Header, Input, Menu, MenuItem, MenuSection, Modal, ModalOverlay, SearchField, useLocale, } from 'react-aria-components';
5
5
  import { Search, SearchX } from 'lucide-react';
6
6
  import { cn } from '../lib/cn.js';
7
7
  import { fieldBox, fieldInput } from './field.js';
@@ -9,6 +9,9 @@ import { IconButton } from './icon-button.js';
9
9
  import { renderIcon } from './icon.js';
10
10
  import { Kbd } from './kbd.js';
11
11
  import { useLabels } from '../lib/locale.js';
12
+ import { duplicateIds, searchCollator, searchSections } from '../lib/search-match.js';
13
+ import { useKeyshortcuts } from '../lib/keyshortcuts.js';
14
+ import { claimSearchShortcut, hasSearchShortcut, isSearchShortcut, subscribeSearchShortcut, } from '../lib/search-shortcut.js';
12
15
  import { itemVisual, rowTarget } from './menu.js';
13
16
  export const searchLabels = {
14
17
  search: 'Search',
@@ -19,42 +22,71 @@ export const searchLabels = {
19
22
  /** The search dialog: type to filter, arrow keys to move, Enter to go, Escape to close. */
20
23
  export function CommandSearch({ isOpen, onOpenChange, sections, onAction, placeholder, labels: given, }) {
21
24
  const t = useLabels('search', searchLabels, given);
22
- const { contains } = useFilter({ sensitivity: 'base' });
23
- return (_jsx(ModalOverlay, { isOpen: isOpen, onOpenChange: onOpenChange, isDismissable: true, "data-overlay": true, className: "fixed inset-0 z-(--z-popover) flex items-start justify-center bg-overlay px-4 pt-[12vh]", children: _jsx(Modal, { "data-sheet": "top", className: "w-full max-w-[40rem] overflow-hidden rounded-xl border border-border bg-popover text-popover-foreground shadow-(--shadow-lg) outline-none", children: _jsx(Dialog, { "aria-label": t('search'), className: "flex max-h-[70vh] flex-col outline-none", children: _jsxs(Autocomplete, { filter: contains, children: [_jsx(SearchField, { "aria-label": t('search'),
24
- // oxlint-disable-next-line jsx-a11y/no-autofocus
25
- autoFocus: true, className: "border-b border-border p-3", children: _jsxs("div", { className: fieldBox, children: [_jsx(Search, { "aria-hidden": "true", className: "pointer-events-none absolute top-1/2 left-2.5 size-5 -translate-y-1/2 text-muted-foreground" }), _jsx(Input, { placeholder: placeholder ?? t('placeholder'), className: cn(fieldInput, 'pr-14 pl-10 [&::-webkit-search-cancel-button]:hidden') }), _jsx(Kbd, { className: "pointer-events-none absolute top-1/2 right-2 -translate-y-1/2", children: t('escapeKey') })] }) }), _jsx(Menu, { items: sections, onAction: (id) => {
26
- onAction?.(id);
27
- onOpenChange(false);
28
- }, renderEmptyState: () => (_jsxs("div", { className: "flex flex-col items-center gap-2 px-4 py-10 text-center text-sm text-muted-foreground", children: [_jsx(SearchX, { "aria-hidden": "true", className: "size-6" }), t('noResults')] })), className: "relative min-h-0 flex-1 overflow-auto p-2 outline-none", children: (section) => (_jsxs(MenuSection, { id: section.id, className: "not-first:mt-2", children: [_jsx(Header, { className: "px-3 pt-1 pb-1 text-[13px] leading-5 font-semibold text-muted-foreground", children: section.title }), _jsx(Collection, { items: section.items, children: (item) => (_jsx(MenuItem, { id: item.id, href: item.href, textValue: item.label, className: cn('group/item', rowTarget), children: _jsxs("span", { className: itemVisual, children: [item.icon &&
29
- renderIcon(item.icon, 'size-5 shrink-0 text-muted-foreground'), _jsxs("span", { className: "flex min-w-0 flex-col", children: [_jsx("span", { className: "truncate font-medium", children: item.label }), item.description && (_jsx("span", { className: "truncate text-[13px] text-muted-foreground", children: item.description }))] })] }) })) })] })) })] }) }) }) }));
25
+ const repeated = JSON.stringify(duplicateIds(sections));
26
+ useEffect(() => {
27
+ if (repeated !== '[]')
28
+ console.error(`Search: item ids must be unique across all sections, and these are used more than once: ${repeated}. React Aria keys the menu by id, so for each, one item is hidden and the other shown twice.`);
29
+ }, [repeated]);
30
+ return (_jsx(ModalOverlay, { isOpen: isOpen, onOpenChange: onOpenChange, isDismissable: true, "data-overlay": true, className: "fixed inset-0 z-(--z-popover) flex items-start justify-center bg-overlay px-4 pt-[12vh]", children: _jsx(Modal, { "data-sheet": "top", className: "w-full max-w-[40rem] overflow-hidden rounded-xl border border-border bg-popover text-popover-foreground shadow-(--shadow-lg) outline-none", children: _jsx(Dialog, { "aria-label": t('search'), className: "flex max-h-[70vh] flex-col outline-none", children: _jsx(SearchBody, { sections: sections, onAction: (id) => {
31
+ onAction?.(id);
32
+ onOpenChange(false);
33
+ }, placeholder: placeholder ?? t('placeholder'), t: t }) }) }) }));
34
+ }
35
+ /**
36
+ * Inside the dialog, so the text starts empty each time it opens. React Aria's Autocomplete can only filter a
37
+ * collection in its own order, so the search holds the text, ranks the items itself and gives the menu only
38
+ * those; Autocomplete still moves through them from the field.
39
+ */
40
+ function SearchBody({ sections, onAction, placeholder, t, }) {
41
+ const [query, setQuery] = useState('');
42
+ const { locale } = useLocale();
43
+ const collator = useMemo(() => searchCollator(locale), [locale]);
44
+ const results = useMemo(() => searchSections(sections, query, collator), [sections, query, collator]);
45
+ return (_jsxs(Autocomplete, { inputValue: query, onInputChange: setQuery, children: [_jsx(SearchField, { "aria-label": t('search'),
46
+ // oxlint-disable-next-line jsx-a11y/no-autofocus
47
+ autoFocus: true, className: "border-b border-border p-3", children: _jsxs("div", { className: fieldBox, children: [_jsx(Search, { "aria-hidden": "true", className: "pointer-events-none absolute top-1/2 left-2.5 size-5 -translate-y-1/2 text-muted-foreground" }), _jsx(Input, { placeholder: placeholder, className: cn(fieldInput, 'pr-14 pl-10 [&::-webkit-search-cancel-button]:hidden') }), _jsx(Kbd, { className: "pointer-events-none absolute top-1/2 right-2 -translate-y-1/2", children: t('escapeKey') })] }) }), _jsx(Menu, { items: results, onAction: onAction, renderEmptyState: () => (_jsxs("div", { className: "flex flex-col items-center gap-2 px-4 py-10 text-center text-sm text-muted-foreground", children: [_jsx(SearchX, { "aria-hidden": "true", className: "size-6" }), t('noResults')] })), className: "relative min-h-0 flex-1 overflow-auto p-2 outline-none", children: (section) => (_jsxs(MenuSection, { id: section.id, className: "not-first:mt-2", children: [_jsx(Header, { className: "px-3 pt-1 pb-1 text-[13px] leading-5 font-semibold text-muted-foreground", children: section.title }), _jsx(Collection, { items: section.items, children: (item) => (_jsx(MenuItem, { id: item.id, href: item.href, textValue: item.label, className: cn('group/item', rowTarget), children: _jsxs("span", { className: itemVisual, children: [item.icon && renderIcon(item.icon, 'size-5 shrink-0 text-muted-foreground'), _jsxs("span", { className: "flex min-w-0 flex-col", children: [_jsx("span", { className: "truncate font-medium", children: item.label }), item.description && (_jsx("span", { className: "truncate text-[13px] text-muted-foreground", children: item.description }))] })] }) })) })] })) })] }));
30
48
  }
31
49
  /**
32
50
  * Opens the search dialog. Looks like a field; is a button named by what it shows, "Search ⌘K", with the
33
51
  * shortcut also in `aria-keyshortcuts`. No `aria-label`: one that left out the shortcut would no longer contain
34
52
  * the visible text (2.5.3 Label in Name, as axe and the Setsquare SDK measure it).
35
53
  */
36
- export function SearchTrigger({ onPress, placeholder, compact, labels: given, className, }) {
54
+ export function SearchTrigger({ onPress, placeholder, compact, labels: given, shortcut = true, className, }) {
37
55
  const t = useLabels('search', searchLabels, given);
56
+ const keys = shortcut ? 'Meta+K Control+K' : undefined;
57
+ const target = useKeyshortcuts(keys);
38
58
  if (compact) {
39
- return (_jsx(IconButton, { label: t('search'), icon: Search, onPress: onPress, "aria-haspopup": "dialog", "aria-keyshortcuts": "Meta+K Control+K" }));
59
+ return (_jsx(IconButton, { label: t('search'), icon: Search, onPress: onPress, "aria-haspopup": "dialog", "aria-keyshortcuts": keys }));
40
60
  }
41
- return (_jsxs(RACButton, { onPress: onPress, "aria-haspopup": "dialog", "aria-keyshortcuts": "Meta+K Control+K", className: cn(
61
+ return (_jsxs(RACButton, { ref: target, onPress: onPress, "aria-haspopup": "dialog", className: cn(
42
62
  // Looks like a field, so it is built like one: the button is the target, the box is painted behind it.
43
- 'field-paint flex h-control-target w-64 min-w-0 cursor-pointer items-center gap-2 pr-2 pl-2.5 text-left text-sm text-muted-foreground outline-none', 'data-hovered:before:bg-accent data-focus-visible:before:focus-ring', className), children: [_jsx(Search, { "aria-hidden": "true", className: "size-5 shrink-0" }), _jsx("span", { className: "min-w-0 flex-1 truncate", children: placeholder ?? t('search') }), " ", _jsx(Kbd, { children: "\u2318K" })] }));
63
+ 'field-paint flex h-control-target w-64 min-w-0 cursor-pointer items-center gap-2 pr-2 pl-2.5 text-left text-sm text-muted-foreground outline-none', 'data-hovered:before:bg-accent data-focus-visible:before:focus-ring', className), children: [_jsx(Search, { "aria-hidden": "true", className: "size-5 shrink-0" }), _jsx("span", { className: "min-w-0 flex-1 truncate", children: placeholder ?? t('search') }), shortcut && (_jsxs(_Fragment, { children: [' ', _jsx(Kbd, { children: "\u2318K" })] }))] }));
44
64
  }
45
- /** Trigger + dialog + the ⌘K / Ctrl+K shortcut, wired together. */
46
- export function AppSearch({ sections, onAction, compact, defaultOpen = false, placeholder, labels, className, }) {
65
+ /**
66
+ * Trigger + dialog + the ⌘K / Ctrl+K shortcut, wired together. The shortcut is left alone when focus is in a field
67
+ * or editor, when another handler has already taken it, and in every search on the page but the one that has it
68
+ * (see `shortcut`); the trigger shows ⌘K only on that one.
69
+ */
70
+ export function AppSearch({ sections, onAction, compact, defaultOpen = false, placeholder, labels, shortcut = true, className, }) {
47
71
  const [isOpen, setOpen] = useState(defaultOpen);
72
+ const id = useId();
73
+ const has = useSyncExternalStore(subscribeSearchShortcut, () => hasSearchShortcut(id), () => true);
48
74
  useEffect(() => {
75
+ if (!shortcut)
76
+ return;
77
+ const letGo = claimSearchShortcut(id);
49
78
  const onKey = (e) => {
50
- if ((e.metaKey || e.ctrlKey) && e.key.toLowerCase() === 'k') {
51
- e.preventDefault();
52
- setOpen(true);
53
- }
79
+ if (!hasSearchShortcut(id) || !isSearchShortcut(e))
80
+ return;
81
+ e.preventDefault();
82
+ setOpen(true);
54
83
  };
55
84
  document.addEventListener('keydown', onKey);
56
- return () => document.removeEventListener('keydown', onKey);
57
- }, []);
58
- return (_jsxs(_Fragment, { children: [_jsx(SearchTrigger, { onPress: () => setOpen(true), compact: compact, labels: labels, className: className }), _jsx(CommandSearch, { isOpen: isOpen, onOpenChange: setOpen, sections: sections, onAction: onAction, placeholder: placeholder, labels: labels })] }));
85
+ return () => {
86
+ document.removeEventListener('keydown', onKey);
87
+ letGo();
88
+ };
89
+ }, [id, shortcut]);
90
+ return (_jsxs(_Fragment, { children: [_jsx(SearchTrigger, { onPress: () => setOpen(true), compact: compact, labels: labels, shortcut: shortcut && has, className: className }), _jsx(CommandSearch, { isOpen: isOpen, onOpenChange: setOpen, sections: sections, onAction: onAction, placeholder: placeholder, labels: labels })] }));
59
91
  }
60
92
  //# sourceMappingURL=search.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/ui/search.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/ui/search.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAClF,OAAO,EACL,YAAY,EACZ,MAAM,IAAI,SAAS,EACnB,UAAU,EACV,MAAM,EACN,MAAM,EACN,KAAK,EACL,IAAI,EACJ,QAAQ,EACR,WAAW,EACX,KAAK,EACL,YAAY,EACZ,WAAW,EACX,SAAS,GAEV,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAiB,MAAM,WAAW,CAAC;AACtD,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAkB,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACtF,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAyBlD,MAAM,CAAC,MAAM,YAAY,GAAiB;IACxC,MAAM,EAAE,QAAQ;IAChB,WAAW,EAAE,sCAAsC;IACnD,SAAS,EAAE,wDAAwD;IACnE,SAAS,EAAE,KAAK;CACjB,CAAC;AAiBF,2FAA2F;AAC3F,MAAM,UAAU,aAAa,CAAC,EAC5B,MAAM,EACN,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,MAAM,EAAE,KAAK,GACM;IACnB,MAAM,CAAC,GAAG,SAAS,CAAC,QAAQ,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;IACxD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,QAAQ,KAAK,IAAI;YACnB,OAAO,CAAC,KAAK,CACX,2FAA2F,QAAQ,8FAA8F,CAClM,CAAC;IACN,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IACf,OAAO,CACL,KAAC,YAAY,IACX,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,YAAY,EAC1B,aAAa,8BAEb,SAAS,EAAC,yFAAyF,YAEnG,KAAC,KAAK,kBACO,KAAK,EAChB,SAAS,EAAC,2IAA2I,YAErJ,KAAC,MAAM,kBAAa,CAAC,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAC,yCAAyC,YAClF,KAAC,UAAU,IACT,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE;wBACf,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;wBACf,YAAY,CAAC,KAAK,CAAC,CAAC;oBACtB,CAAC,EACD,WAAW,EAAE,WAAW,IAAI,CAAC,CAAC,aAAa,CAAC,EAC5C,CAAC,EAAE,CAAC,GACJ,GACK,GACH,GACK,CAChB,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAS,UAAU,CAAC,EAClB,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,CAAC,GAMF;IACC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACvC,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,CAAC;IAC/B,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IACjE,MAAM,OAAO,GAAG,OAAO,CACrB,GAAG,EAAE,CAAC,cAAc,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,CAAC,EAC/C,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,CAAC,CAC5B,CAAC;IACF,OAAO,CACL,MAAC,YAAY,IAAC,UAAU,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,aAEtD,KAAC,WAAW,kBACE,CAAC,CAAC,QAAQ,CAAC;gBACvB,iDAAiD;gBACjD,SAAS,QACT,SAAS,EAAC,4BAA4B,YAEtC,eAAK,SAAS,EAAE,QAAQ,aACtB,KAAC,MAAM,mBACO,MAAM,EAClB,SAAS,EAAC,6FAA6F,GACvG,EACF,KAAC,KAAK,IACJ,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,EAAE,CAAC,UAAU,EAAE,sDAAsD,CAAC,GACjF,EACF,KAAC,GAAG,IAAC,SAAS,EAAC,+DAA+D,YAC3E,CAAC,CAAC,WAAW,CAAC,GACX,IACF,GACM,EACd,KAAC,IAAI,IACH,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,QAAQ,EAClB,gBAAgB,EAAE,GAAG,EAAE,CAAC,CACtB,eAAK,SAAS,EAAC,uFAAuF,aACpG,KAAC,OAAO,mBAAa,MAAM,EAAC,SAAS,EAAC,QAAQ,GAAG,EAChD,CAAC,CAAC,WAAW,CAAC,IACX,CACP,EACD,SAAS,EAAC,wDAAwD,YAEjE,CAAC,OAAO,EAAE,EAAE,CAAC,CACZ,MAAC,WAAW,IAAC,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,SAAS,EAAC,gBAAgB,aACrD,KAAC,MAAM,IAAC,SAAS,EAAC,0EAA0E,YACzF,OAAO,CAAC,KAAK,GACP,EACT,KAAC,UAAU,IAAC,KAAK,EAAE,OAAO,CAAC,KAAK,YAC7B,CAAC,IAAI,EAAE,EAAE,CAAC,CACT,KAAC,QAAQ,IACP,EAAE,EAAE,IAAI,CAAC,EAAE,EACX,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,SAAS,EAAE,IAAI,CAAC,KAAK,EACrB,SAAS,EAAE,EAAE,CAAC,YAAY,EAAE,SAAS,CAAC,YAEtC,gBAAM,SAAS,EAAE,UAAU,aACxB,IAAI,CAAC,IAAI,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,uCAAuC,CAAC,EAC5E,gBAAM,SAAS,EAAC,uBAAuB,aACrC,eAAM,SAAS,EAAC,sBAAsB,YAAE,IAAI,CAAC,KAAK,GAAQ,EACzD,IAAI,CAAC,WAAW,IAAI,CACnB,eAAM,SAAS,EAAC,4CAA4C,YACzD,IAAI,CAAC,WAAW,GACZ,CACR,IACI,IACF,GACE,CACZ,GACU,IACD,CACf,GACI,IACM,CAChB,CAAC;AACJ,CAAC;AAcD;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,EAC5B,OAAO,EACP,WAAW,EACX,OAAO,EACP,MAAM,EAAE,KAAK,EACb,QAAQ,GAAG,IAAI,EACf,SAAS,GACU;IACnB,MAAM,CAAC,GAAG,SAAS,CAAC,QAAQ,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;IACnD,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,SAAS,CAAC;IACvD,MAAM,MAAM,GAAG,eAAe,CAAoB,IAAI,CAAC,CAAC;IACxD,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CACL,KAAC,UAAU,IACT,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,EAClB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,OAAO,mBACF,QAAQ,uBACH,IAAI,GACvB,CACH,CAAC;IACJ,CAAC;IACD,OAAO,CACL,MAAC,SAAS,IACR,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,OAAO,mBACF,QAAQ,EACtB,SAAS,EAAE,EAAE;QACX,uGAAuG;QACvG,mJAAmJ,EACnJ,oEAAoE,EACpE,SAAS,CACV,aAED,KAAC,MAAM,mBAAa,MAAM,EAAC,SAAS,EAAC,iBAAiB,GAAG,EACzD,eAAM,SAAS,EAAC,yBAAyB,YAAE,WAAW,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAQ,EAC5E,QAAQ,IAAI,CACX,8BACG,GAAG,EACJ,KAAC,GAAG,0BAAS,IACZ,CACJ,IACS,CACb,CAAC;AACJ,CAAC;AAmBD;;;;GAIG;AACH,MAAM,UAAU,SAAS,CAAC,EACxB,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,WAAW,GAAG,KAAK,EACnB,WAAW,EACX,MAAM,EACN,QAAQ,GAAG,IAAI,EACf,SAAS,GACM;IACf,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;IAChD,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;IACnB,MAAM,GAAG,GAAG,oBAAoB,CAC9B,uBAAuB,EACvB,GAAG,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC,EAC3B,GAAG,EAAE,CAAC,IAAI,CACX,CAAC;IACF,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,QAAQ;YAAE,OAAO;QACtB,MAAM,KAAK,GAAG,mBAAmB,CAAC,EAAE,CAAC,CAAC;QACtC,MAAM,KAAK,GAAG,CAAC,CAAgB,EAAE,EAAE;YACjC,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;gBAAE,OAAO;YAC3D,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,OAAO,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC,CAAC;QACF,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC5C,OAAO,GAAG,EAAE;YACV,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YAC/C,KAAK,EAAE,CAAC;QACV,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC;IACnB,OAAO,CACL,8BACE,KAAC,aAAa,IACZ,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAC5B,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,IAAI,GAAG,EACzB,SAAS,EAAE,SAAS,GACpB,EACF,KAAC,aAAa,IACZ,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,OAAO,EACrB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,MAAM,GACd,IACD,CACJ,CAAC;AACJ,CAAC"}
package/dist/ui/tree.d.ts CHANGED
@@ -1,5 +1,6 @@
1
- import type { ReactNode } from 'react';
1
+ import type { ReactNode, Ref } from 'react';
2
2
  import { TreeSection as RACTreeSection, type TreeItemProps as RACTreeItemProps, type TreeProps as RACTreeProps } from 'react-aria-components';
3
+ import { type KeyshortcutsProps } from '../lib/keyshortcuts.js';
3
4
  import { type IconProp } from './icon.js';
4
5
  /** A tree is named by a visible heading (`aria-labelledby`) or, when it has none, by `aria-label`. */
5
6
  type TreeName = {
@@ -7,8 +8,9 @@ type TreeName = {
7
8
  } | {
8
9
  'aria-labelledby': string;
9
10
  };
10
- export type TreeProps<T extends object> = Omit<RACTreeProps<T>, 'className' | 'aria-label' | 'aria-labelledby'> & TreeName & {
11
+ export type TreeProps<T extends object> = Omit<RACTreeProps<T>, 'className' | 'aria-label' | 'aria-labelledby'> & TreeName & KeyshortcutsProps & {
11
12
  className?: string;
13
+ ref?: Ref<HTMLDivElement>;
12
14
  };
13
15
  /**
14
16
  * Nested things people open, close and act on: the blocks of a page, the steps of a workflow and their outcomes,
@@ -25,7 +27,7 @@ export type TreeProps<T extends object> = Omit<RACTreeProps<T>, 'className' | 'a
25
27
  * button, which is how a keyboard or screen reader drag starts: Enter on it, ↑ ↓ to a drop place, Enter to drop,
26
28
  * Esc to cancel.
27
29
  */
28
- export declare function Tree<T extends object>({ className, ...props }: TreeProps<T>): import("react").JSX.Element;
30
+ export declare function Tree<T extends object>({ className, ref, 'aria-keyshortcuts': keys, ...props }: TreeProps<T>): import("react").JSX.Element;
29
31
  export interface TreeItemProps<T extends object = object> extends Omit<RACTreeItemProps<T>, 'className' | 'children' | 'textValue' | 'style'> {
30
32
  /** What the row is called. A string is also its `textValue`. */
31
33
  title: ReactNode;
@@ -1 +1 @@
1
- {"version":3,"file":"tree.d.ts","sourceRoot":"","sources":["../../src/ui/tree.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tree.d.ts","sourceRoot":"","sources":["../../src/ui/tree.tsx"],"names":[],"mappings":"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"}
package/dist/ui/tree.js CHANGED
@@ -3,6 +3,7 @@ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-run
3
3
  import { ChevronRight, GripVertical } from 'lucide-react';
4
4
  import { Button as RACButton, Tree as RACTree, TreeHeader as RACTreeHeader, TreeItem as RACTreeItem, TreeItemContent, TreeSection as RACTreeSection, useLocale, } from 'react-aria-components';
5
5
  import { cn } from '../lib/cn.js';
6
+ import { useKeyshortcuts } from '../lib/keyshortcuts.js';
6
7
  import { formatList } from '../lib/labels.js';
7
8
  import { SelectionCheckbox } from './checkbox.js';
8
9
  import { renderIcon } from './icon.js';
@@ -21,8 +22,9 @@ import { renderIcon } from './icon.js';
21
22
  * button, which is how a keyboard or screen reader drag starts: Enter on it, ↑ ↓ to a drop place, Enter to drop,
22
23
  * Esc to cancel.
23
24
  */
24
- export function Tree({ className, ...props }) {
25
- return (_jsx(RACTree, { ...props, className: cn('relative flex max-h-[inherit] flex-col gap-(--nav-item-gap) overflow-auto text-sm outline-none data-focus-visible:focus-ring',
25
+ export function Tree({ className, ref, 'aria-keyshortcuts': keys, ...props }) {
26
+ const tree = useKeyshortcuts(keys, ref);
27
+ return (_jsx(RACTree, { ...props, ref: tree, className: cn('relative flex max-h-[inherit] flex-col gap-(--nav-item-gap) overflow-auto text-sm outline-none data-focus-visible:focus-ring',
26
28
  // Dropping onto the tree itself (an empty tree, or the end of it).
27
29
  'data-drop-target:bg-brand-subtle data-drop-target:outline-2 data-drop-target:outline-solid data-drop-target:outline-brand data-drop-target:-outline-offset-2', className) }));
28
30
  }
@@ -1 +1 @@
1
- {"version":3,"file":"tree.js","sourceRoot":"","sources":["../../src/ui/tree.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EACL,MAAM,IAAI,SAAS,EACnB,IAAI,IAAI,OAAO,EACf,UAAU,IAAI,aAAa,EAC3B,QAAQ,IAAI,WAAW,EACvB,eAAe,EACf,WAAW,IAAI,cAAc,EAC7B,SAAS,GAGV,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,UAAU,EAAiB,MAAM,WAAW,CAAC;AAWtD;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,IAAI,CAAmB,EAAE,SAAS,EAAE,GAAG,KAAK,EAAgB;IAC1E,OAAO,CACL,KAAC,OAAO,OACD,KAAyB,EAC9B,SAAS,EAAE,EAAE,CACX,8HAA8H;QAC9H,mEAAmE;QACnE,8JAA8J,EAC9J,SAAS,CACV,GACD,CACH,CAAC;AACJ,CAAC;AAgDD,qGAAqG;AACrG,MAAM,IAAI,GAAG,8DAA8D,CAAC;AAE5E;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,QAAQ,CAA4B,EAClD,KAAK,EACL,SAAS,EACT,IAAI,EACJ,WAAW,EACX,MAAM,EACN,WAAW,EACX,OAAO,EACP,iBAAiB,EACjB,QAAQ,EACR,SAAS,EACT,cAAc,EAAE,QAAQ,GAAG,IAAI,EAC/B,SAAS,EACT,GAAG,KAAK,EACS;IACjB,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,CAAC;IAC/B,MAAM,IAAI,GAAG,SAAS,IAAI,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACnE,MAAM,KAAK,GAAG,UAAU,CACtB;QACE,KAAK,CAAC,YAAY,CAAC,IAAI,IAAI;QAC3B,OAAO,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;QAClD,WAAW,IAAI,EAAE;KAClB,CAAC,MAAM,CAAC,OAAO,CAAC,EACjB,MAAM,CACP,CAAC;IACF,OAAO,CACL,MAAC,WAAW,OACN,KAAK,EACT,SAAS,EAAE,IAAI,gBACH,KAAK,IAAI,SAAS,EAC9B,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,cAAc,EAAE,KAAK,EAAE,CAAkB,EAClE,SAAS,EAAE,EAAE;QACX,sGAAsG;QACtG,+MAA+M,EAC/M,4OAA4O,EAC5O,uLAAuL;QACvL,sGAAsG;QACtG,8UAA8U,EAC9U,SAAS,CACV,aAED,KAAC,eAAe,cACb,CAAC,EAAE,aAAa,EAAE,aAAa,EAAE,iBAAiB,EAAE,cAAc,EAAE,SAAS,EAAE,EAAE,EAAE;oBAClF,MAAM,cAAc,GAAG,SAAS,IAAI,QAAQ,CAAC;oBAC7C,OAAO,CACL,8BACG,aAAa,CAAC,CAAC,CAAC,CACf,KAAC,SAAS,IACR,IAAI,EAAC,SAAS,EACd,SAAS,EAAE,EAAE,CACX,uGAAuG,EACvG,IAAI,CACL,YAED,eAAM,SAAS,EAAC,4KAA4K,YAC1L,KAAC,YAAY,mBACC,MAAM,EAClB,SAAS,EAAC,gDAAgD,GAC1D,GACG,GACG,CACb,CAAC,CAAC,CAAC,CACF,8BAAkB,MAAM,EAAC,SAAS,EAAE,IAAI,GAAI,CAC7C,EACA,aAAa,KAAK,UAAU,IAAI,iBAAiB,KAAK,QAAQ,IAAI,CACjE,KAAC,iBAAiB,KAAG,CACtB,EACD,gBAAM,SAAS,EAAC,yDAAyD,aACtE,IAAI;wCACH,UAAU,CACR,IAAI,EACJ,gFAAgF,CACjF,EACH,eAAM,SAAS,EAAC,kHAAkH,YAC/H,KAAK,GACD,EACN,WAAW,IAAI,CAEd,eAAM,SAAS,EAAC,kEAAkE,YAC/E,WAAW,GACP,CACR,EACA,MAAM,IAAI,CAGT,eAAM,SAAS,EAAC,mCAAmC,YAAE,MAAM,GAAQ,CACpE,IACI,EACN,CAAC,OAAO,IAAI,cAAc,CAAC,IAAI,CAC9B,gBACE,SAAS,EAAE,EAAE,CACX,oCAAoC,EACpC,CAAC,iBAAiB;oCAChB,mFAAmF;oCACnF,mFAAmF;oCACnF,sFAAsF;oCACtF,+BAA+B;oCAC/B,+BAA+B,EACjC,6EAA6E,EAC7E,2FAA2F,EAC3F,6FAA6F,EAC7F,2CAA2C,CAC5C,aAEA,cAAc,IAAI,CACjB,KAAC,SAAS,IACR,IAAI,EAAC,MAAM,gBACC,SAAS,EACrB,SAAS,EAAC,uHAAuH,YAEjI,eAAM,SAAS,EAAC,oNAAoN,YAClO,KAAC,YAAY,mBAAa,MAAM,EAAC,SAAS,EAAC,QAAQ,GAAG,GACjD,GACG,CACb,EACA,OAAO,IACH,CACR,IACA,CACJ,CAAC;gBACJ,CAAC,GACe,EACjB,QAAQ,IACG,CACf,CAAC;AACJ,CAAC;AAYD,8FAA8F;AAC9F,MAAM,UAAU,WAAW,CAAmB,EAAE,SAAS,EAAE,GAAG,KAAK,EAAuB;IACxF,OAAO,KAAC,cAAc,OAAK,KAAK,EAAE,SAAS,EAAE,SAAS,GAAI,CAAC;AAC7D,CAAC;AAED,gGAAgG;AAChG,MAAM,UAAU,UAAU,CAAC,EAAE,QAAQ,EAAE,SAAS,EAA+C;IAC7F,OAAO,CACL,KAAC,aAAa,IACZ,SAAS,EAAE,EAAE,CACX,qEAAqE,EACrE,SAAS,CACV,YAEA,QAAQ,GACK,CACjB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"tree.js","sourceRoot":"","sources":["../../src/ui/tree.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@setsquare/ui",
3
- "version": "0.7.0",
3
+ "version": "0.9.0",
4
4
  "description": "React Aria components, design tokens, a dashboard shell and a site shell, with a switch between WCAG 2.2 AA and AAA sizing, spacing and contrast.",
5
5
  "license": "Apache-2.0",
6
6
  "homepage": "https://github.com/Worktree-Amigos/setsquare-ui#readme",