@epilot/zenith-react 0.3.0-next.13 → 0.3.0-next.15

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
@@ -5,14 +5,14 @@ history belongs to the source project and remains available through Git.
5
5
 
6
6
  ## Unreleased
7
7
 
8
- ## [0.3.0-next.13] - 2026-11-02
8
+ ## [0.3.0-next.15] - 2026-11-02
9
9
 
10
10
  - changed: Release preparation takes the changelog version from the package manifest, validates fragments by one rule that the merge request gate shares, checks the real packed tarball and keeps it for publishing, keeps the host bundle out of the runtime package, and stops a React-only release on unpublished runtime changes. Private workspace versions no longer need to follow the React release. — @wmolinari ([!164](https://gitlab.com/e-pilot/product/frontend/zenith/-/merge_requests/164))
11
11
  - **BREAKING**: `@epilot/zenith-react/tokens.json` no longer has a `version` field; read the version from `@epilot/zenith-react/package.json`. — @wmolinari ([!164](https://gitlab.com/e-pilot/product/frontend/zenith/-/merge_requests/164))
12
- - changed: **BREAKING**: FieldCombobox and Command, the search list inside it, run on Base UI's Autocomplete instead of `cmdk`. Options are data: pass them as `items` on `FieldComboboxContent` and render them with a function in `FieldComboboxList` (and in `FieldComboboxCollection` inside each `FieldComboboxGroup`, which takes its group's `items`). `FieldComboboxItem`'s `value` is the item, and `onClick`, which also runs on Enter, replaces `onSelect`. `items` is required on `FieldComboboxContent`. The search text moves from `FieldComboboxInput`'s `value`/`onValueChange` to `FieldComboboxContent`'s, `FieldComboboxGroupLabel` replaces `FieldComboboxGroup`'s `heading`, and filtering is a case-insensitive "contains" that keeps the items' order. The Combobox page's "Changed in this version" section shows the new form (#106) — @wmolinari ([!151](https://gitlab.com/e-pilot/product/frontend/zenith/-/merge_requests/151)) (experiment: https://gitlab.com/e-pilot/product/frontend/zenith/-/merge_requests/151)
13
- - removed: **BREAKING**: from FieldCombobox and Command: `FieldComboboxItem`'s `keywords` and `forceMount` (pass `filter={null}` for items the caller already filtered), `FieldComboboxLoading`'s `progress` and `label`, `FieldComboboxSeparator`'s `alwaysRender`, `FieldComboboxList`'s `label` (pass `aria-label`), `id` on `FieldComboboxList` and `FieldComboboxItem` (Base UI's ids are what `aria-controls` and `aria-activedescendant` point at), `asChild` on every search part, Label's props on `FieldComboboxGroupLabel` (now a `<div>`), cmdk's fuzzy ranking, Home/End, Ctrl+N/J/P/K and the Alt/Meta arrow jumps, the `cmdk-*` attributes, and the `cmdk` dependency, so `dist/` bundles no `@radix-ui` module (#106) — @wmolinari ([!151](https://gitlab.com/e-pilot/product/frontend/zenith/-/merge_requests/151)) (experiment: https://gitlab.com/e-pilot/product/frontend/zenith/-/merge_requests/151)
12
+ - changed: **BREAKING**: FieldCombobox and Command, the search list inside it, run on Base UI's Autocomplete instead of `cmdk`. Options are data: pass them as `items` on `FieldComboboxContent` and render them with a function in `FieldComboboxList` (and in `FieldComboboxCollection` inside each `FieldComboboxGroup`, which takes its group's `items`). `FieldComboboxItem`'s `value` is the item, and `onClick`, which also runs on Enter, replaces `onSelect`. `items` is required on `FieldComboboxContent`. The search text moves from `FieldComboboxInput`'s `value`, `defaultValue` and `onValueChange` to `FieldComboboxContent`'s, `FieldComboboxGroupLabel` replaces `FieldComboboxGroup`'s `heading`, and filtering is a case-insensitive "contains" that keeps the items' order. The Combobox page's "Changed in this version" section shows the new form (#106) — @wmolinari ([!151](https://gitlab.com/e-pilot/product/frontend/zenith/-/merge_requests/151)) (experiment: https://gitlab.com/e-pilot/product/frontend/zenith/-/merge_requests/151)
13
+ - removed: **BREAKING**: from FieldCombobox and Command: `FieldComboboxItem`'s `keywords` and `forceMount` (pass `filter={null}` for items the caller already filtered), `FieldComboboxGroup`'s `value` and `forceMount` (a group is its data, `{ value, items }`: key and label it with that `value`, and pass `filter={null}` with the caller's own filtering to keep a group that cmdk force-mounted), `FieldComboboxLoading`'s `progress` and `label`, `FieldComboboxSeparator`'s `alwaysRender`, `FieldComboboxList`'s `label` (pass `aria-label`), `id` on `FieldComboboxList` and `FieldComboboxItem` (Base UI's ids are what `aria-controls` and `aria-activedescendant` point at), `asChild` on every search part, Label's props on `FieldComboboxGroupLabel` (now a `<div>`), cmdk's fuzzy ranking, Home/End, Ctrl+N/J/P/K and the Alt/Meta arrow jumps, the `cmdk-*` attributes, and the `cmdk` dependency, so `dist/` bundles no `@radix-ui` module (#106) — @wmolinari ([!151](https://gitlab.com/e-pilot/product/frontend/zenith/-/merge_requests/151)) (experiment: https://gitlab.com/e-pilot/product/frontend/zenith/-/merge_requests/151)
14
14
  - changed: `FieldLabel` inside a `Field` renders with an id (a caller's own `id` wins), and `FieldComboboxList` points its `aria-labelledby` at the Field's label that names the trigger (the one whose `htmlFor` is the trigger's id, else the first `FieldLabel`), so the list carries the trigger's name (#106) — @wmolinari ([!151](https://gitlab.com/e-pilot/product/frontend/zenith/-/merge_requests/151)) (experiment: https://gitlab.com/e-pilot/product/frontend/zenith/-/merge_requests/151)
15
- - added: `FieldComboboxCollection`, and `@epilot/zenith-runtime/v1` serves Base UI's `autocomplete`; publish the runtime before `@epilot/zenith-react` (#106) — @wmolinari ([!151](https://gitlab.com/e-pilot/product/frontend/zenith/-/merge_requests/151)) (experiment: https://gitlab.com/e-pilot/product/frontend/zenith/-/merge_requests/151)
15
+ - added: `FieldComboboxCollection`, which renders a `FieldComboboxGroup`'s matches. This release requires `@epilot/zenith-runtime` 0.3.0 or later (serves autocomplete); release the runtime and deploy root-config first (#106) — @wmolinari ([!151](https://gitlab.com/e-pilot/product/frontend/zenith/-/merge_requests/151)) (experiment: https://gitlab.com/e-pilot/product/frontend/zenith/-/merge_requests/151)
16
16
 
17
17
  ## [0.2.2] - 2026-10-30
18
18
 
@@ -1 +1 @@
1
- {"version":3,"file":"command.js","sources":["../../../src/components/command/command.tsx"],"sourcesContent":["import * as React from \"react\"\nimport { Autocomplete as AutocompletePrimitive } from \"@base-ui/react/autocomplete\"\nimport { mergeClasses, shorthands } from \"@epilot/zenith-runtime/v1\"\n\nimport { SLOT_ATTR } from \"../../renderer/contract\"\nimport { makeZenithStyles } from \"../../styles/make-styles\"\nimport { boxModel } from \"../../styles/host-reset\"\nimport * as tokens from \"../../tokens\"\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n type DialogProps,\n} from \"../dialog/dialog\"\n\nconst SearchIcon = (props: React.SVGProps<SVGSVGElement>) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n height=\"24px\"\n viewBox=\"0 -960 960 960\"\n width=\"24px\"\n fill=\"currentColor\"\n {...props}\n >\n <path d=\"M380-320q-109 0-184.5-75.5T120-580q0-109 75.5-184.5T380-840q109 0 184.5 75.5T640-580q0 44-14 83t-38 69l224 224q11 11 11 28t-11 28q-11 11-28 11t-28-11L532-372q-30 24-69 38t-83 14Zm0-80q75 0 127.5-52.5T560-580q0-75-52.5-127.5T380-760q-75 0-127.5 52.5T200-580q0 75 52.5 127.5T380-400Z\" />\n </svg>\n)\n\nconst useStyles = makeZenithStyles({\n root: {\n ...boxModel,\n backgroundColor: tokens.body,\n color: tokens.grayA12,\n display: \"flex\",\n height: \"100%\",\n width: \"100%\",\n flexDirection: \"column\",\n overflowX: \"hidden\",\n overflowY: \"hidden\",\n ...shorthands.borderRadius(tokens.radiusMd),\n },\n inputWrapper: {\n ...boxModel,\n display: \"flex\",\n alignItems: \"center\",\n ...shorthands.gap(tokens.spacingElement2),\n ...shorthands.borderBottom(\"1px\", \"solid\", tokens.grayA3),\n paddingLeft: tokens.spacingElement3,\n paddingRight: tokens.spacingElement3,\n // The input's focus ring, drawn on the whole search row: the row holds the inline padding, so a\n // ring on the input itself ran through the first letter. `:focus-within` because the input is\n // the row's only focusable element and a text input matches :focus-visible whenever it has\n // focus. Inset (negative), not the outward +2px every other audited control uses: the row sits\n // flush against the edges of the Command root, which clips overflow for its rounded corners.\n \"&:focus-within\": {\n outlineWidth: \"2px\",\n outlineStyle: \"solid\",\n outlineOffset: \"-2px\",\n outlineColor: tokens.focusRing,\n },\n },\n searchIcon: {\n ...boxModel,\n width: \"1.25rem\",\n height: \"1.25rem\",\n flexShrink: 0,\n opacity: 0.5,\n },\n input: {\n ...boxModel,\n height: \"3rem\",\n display: \"flex\",\n width: \"100%\",\n ...shorthands.borderRadius(tokens.radiusMd),\n backgroundColor: \"transparent\",\n paddingTop: tokens.spacingElement3,\n paddingBottom: tokens.spacingElement3,\n fontSize: tokens.textSm,\n lineHeight: tokens.leadingSm,\n outlineStyle: \"none\",\n \"::placeholder\": {\n color: tokens.grayA11,\n },\n \":disabled\": {\n cursor: \"not-allowed\",\n opacity: 0.5,\n },\n },\n list: {\n overflowX: \"hidden\",\n overflowY: \"auto\",\n scrollPaddingTop: tokens.spacingElement1,\n scrollPaddingBottom: tokens.spacingElement1,\n },\n empty: {\n ...boxModel,\n paddingTop: \"1.5rem\",\n paddingBottom: \"1.5rem\",\n textAlign: \"center\",\n fontSize: tokens.textSm,\n lineHeight: tokens.leadingSm,\n color: tokens.grayA11,\n // Base UI keeps the empty state mounted as a live region and empties it while items match.\n \":empty\": {\n paddingTop: 0,\n paddingBottom: 0,\n },\n },\n group: {\n ...boxModel,\n color: tokens.grayA12,\n overflowX: \"hidden\",\n overflowY: \"hidden\",\n ...shorthands.padding(tokens.spacingElement1),\n },\n groupLabel: {\n ...boxModel,\n color: tokens.grayA11,\n paddingLeft: tokens.spacingElement2,\n paddingRight: tokens.spacingElement2,\n paddingTop: \"0.375rem\",\n paddingBottom: \"0.375rem\",\n fontSize: tokens.textXs,\n lineHeight: tokens.leadingXs,\n fontWeight: tokens.fontWeightMedium,\n },\n separator: {\n ...boxModel,\n backgroundColor: tokens.graySoft,\n marginLeft: `calc(-1 * ${tokens.spacingElement1})`,\n marginRight: `calc(-1 * ${tokens.spacingElement1})`,\n height: \"1px\",\n },\n item: {\n ...boxModel,\n position: \"relative\",\n display: \"flex\",\n cursor: \"default\",\n alignItems: \"center\",\n ...shorthands.gap(tokens.spacingElement2),\n ...shorthands.borderRadius(tokens.radiusSm),\n paddingLeft: tokens.spacingElement2,\n paddingRight: tokens.spacingElement2,\n paddingTop: \"0.375rem\",\n paddingBottom: \"0.375rem\",\n fontSize: tokens.textSm,\n lineHeight: tokens.leadingSm,\n outlineStyle: \"none\",\n userSelect: \"none\",\n color: tokens.grayA12,\n \"&[data-highlighted]\": {\n backgroundColor: tokens.accentA3,\n },\n \":hover\": {\n backgroundColor: tokens.accentA3,\n },\n \"&[data-disabled]\": {\n pointerEvents: \"none\",\n opacity: 0.5,\n },\n \"& svg\": {\n pointerEvents: \"none\",\n flexShrink: 0,\n width: \"1rem\",\n height: \"1rem\",\n },\n \"& svg:not([class*='text-'])\": {\n color: tokens.grayA11,\n },\n },\n shortcut: {\n color: tokens.grayA11,\n marginLeft: \"auto\",\n fontSize: tokens.textXs,\n lineHeight: tokens.leadingXs,\n letterSpacing: \"0.1em\",\n },\n loading: {\n color: tokens.grayA11,\n },\n dialogContent: {\n ...boxModel,\n overflowX: \"hidden\",\n overflowY: \"hidden\",\n ...shorthands.padding(0),\n },\n dialogCommand: {\n [`& [${SLOT_ATTR}=\"command-group-label\"]`]: {\n color: tokens.grayA11,\n paddingLeft: tokens.spacingElement2,\n paddingRight: tokens.spacingElement2,\n fontWeight: tokens.fontWeightMedium,\n },\n [`& [${SLOT_ATTR}=\"command-input-wrapper\"]`]: {\n height: \"3rem\",\n },\n [`& [${SLOT_ATTR}=\"command-group\"]`]: {\n paddingLeft: tokens.spacingElement2,\n paddingRight: tokens.spacingElement2,\n },\n [`& [${SLOT_ATTR}=\"command-item\"]`]: {\n paddingLeft: tokens.spacingElement2,\n paddingRight: tokens.spacingElement2,\n paddingTop: tokens.spacingElement3,\n paddingBottom: tokens.spacingElement3,\n },\n [`& [${SLOT_ATTR}=\"command-item\"] svg`]: {\n width: \"1.25rem\",\n height: \"1.25rem\",\n },\n [`& [${SLOT_ATTR}=\"command-input\"]`]: {\n height: \"3rem\",\n },\n },\n srOnly: {\n ...boxModel,\n position: \"absolute\",\n width: \"1px\",\n height: \"1px\",\n paddingTop: 0,\n paddingBottom: 0,\n paddingLeft: 0,\n paddingRight: 0,\n marginTop: \"-1px\",\n marginBottom: \"-1px\",\n marginLeft: \"-1px\",\n marginRight: \"-1px\",\n overflowX: \"hidden\",\n overflowY: \"hidden\",\n clip: \"rect(0, 0, 0, 0)\",\n whiteSpace: \"nowrap\",\n ...shorthands.borderWidth(0),\n },\n})\n\n/**\n * Whether an item matches the search text. `itemToString` is the string Command matches an\n * object item by. Typed as a method so a filter written for the caller's own item type is accepted.\n */\nexport type CommandFilter = {\n bivarianceHack(\n item: unknown,\n query: string,\n itemToString?: (item: unknown) => string\n ): boolean\n}[\"bivarianceHack\"]\n\n/** Renders one item (or one group) of `items`; `index` is its position among the matches. */\nexport type CommandRenderItem = {\n bivarianceHack(item: unknown, index: number): React.ReactNode\n}[\"bivarianceHack\"]\n\n/** The string an object item is matched by and announced as. */\nexport type CommandItemToString = {\n bivarianceHack(item: unknown): string\n}[\"bivarianceHack\"]\n\n/**\n * Filtering, as Base UI's Autocomplete does it: the items are data, matched against the search\n * text, and the list renders the matches.\n */\nexport type CommandRootProps = {\n /**\n * The items to filter: a flat array, or groups shaped `{ items: [...] }` that the list renders\n * with CommandGroup and CommandCollection. Required: without it nothing would filter and the\n * empty state would show beside the options.\n */\n items: readonly unknown[]\n /**\n * Whether an item matches the search text. Defaults to a locale-aware, case-insensitive\n * \"contains\" on the item's string (`label` for `{ value, label }` objects). `null` turns\n * filtering off, for items the caller has already filtered (a server-side search).\n */\n filter?: CommandFilter | null\n /** The string an object item is matched by. `{ value, label }` items need none: `label` is used. */\n itemToStringValue?: CommandItemToString\n /** The most matches to render. All of them by default. */\n limit?: number\n /** The search text, when controlled. */\n value?: string\n /** The search text it starts with, when uncontrolled. */\n defaultValue?: string\n /** Called with the new search text as the user types. */\n onValueChange?: (value: string) => void\n}\n\n/**\n * never exported it and its only consumer is `field/field-combobox.tsx`, which builds its listbox\n * out of these pieces. This was a decision, not an oversight: a public Command is a surface nobody\n * has reviewed as public API, and exporting it after 0.1 is additive and non-breaking, whereas un-\n * exporting it would not be.\n * @internal not part of the 0.1 public API. Command is fully implemented and tested, but the barrel\n */\nexport type CommandProps = Omit<React.ComponentProps<\"div\">, \"defaultValue\"> &\n CommandRootProps & {\n \"data-slot\"?: string\n }\n\n/** The search text, for parts that change while a search is under way (the separators). */\nconst CommandSearchContext = React.createContext(\"\")\n\n/**\n * Base UI's Autocomplete, inline and always open: the search input filters the list in place.\n * The first match stays highlighted, so Enter runs it.\n */\nexport const Command = React.forwardRef<HTMLDivElement, CommandProps>(\n function Command(\n {\n className,\n \"data-slot\": dataSlot = \"command\",\n items,\n filter,\n itemToStringValue,\n limit,\n value,\n defaultValue,\n onValueChange,\n children,\n ...props\n },\n ref\n ) {\n const styles = useStyles()\n // Base UI keeps the search text to itself; Command mirrors it for the separators.\n const [typed, setTyped] = React.useState(defaultValue ?? \"\")\n const search = value ?? typed\n\n return (\n <AutocompletePrimitive.Root\n inline\n open\n autoHighlight=\"always\"\n keepHighlight\n items={items}\n filter={filter}\n itemToStringValue={itemToStringValue}\n limit={limit}\n value={value}\n defaultValue={defaultValue}\n onValueChange={(next: string) => {\n setTyped(next)\n onValueChange?.(next)\n }}\n >\n <CommandSearchContext.Provider value={search}>\n <div\n ref={ref}\n data-slot={dataSlot}\n {...{ [SLOT_ATTR]: dataSlot }}\n className={mergeClasses(styles.root, className)}\n {...props}\n >\n {children}\n </div>\n </CommandSearchContext.Provider>\n </AutocompletePrimitive.Root>\n )\n }\n)\n\nexport type CommandDialogProps = Omit<DialogProps, \"children\"> &\n CommandRootProps & {\n children?: React.ReactNode\n title?: string\n description?: string\n className?: string\n showCloseButton?: boolean\n }\n\nexport const CommandDialog = React.forwardRef<HTMLElement, CommandDialogProps>(\n function CommandDialog(\n {\n title = \"Command Palette\",\n description = \"Search for a command to run...\",\n children,\n className,\n showCloseButton = true,\n items,\n filter,\n itemToStringValue,\n limit,\n value,\n defaultValue,\n onValueChange,\n ...props\n },\n _ref\n ) {\n const styles = useStyles()\n\n return (\n <Dialog {...props}>\n <DialogHeader className={styles.srOnly}>\n <DialogTitle>{title}</DialogTitle>\n <DialogDescription>{description}</DialogDescription>\n </DialogHeader>\n <DialogContent\n className={mergeClasses(styles.dialogContent, className)}\n showCloseButton={showCloseButton}\n >\n <Command\n className={styles.dialogCommand}\n items={items}\n filter={filter}\n itemToStringValue={itemToStringValue}\n limit={limit}\n value={value}\n defaultValue={defaultValue}\n onValueChange={onValueChange}\n >\n {children}\n </Command>\n </DialogContent>\n </Dialog>\n )\n }\n)\n\nexport type CommandInputProps = Omit<\n React.ComponentProps<\"input\">,\n \"value\" | \"defaultValue\" | \"type\"\n> & {\n wrapperClassName?: string\n}\n\nexport const CommandInput = React.forwardRef<\n HTMLInputElement,\n CommandInputProps\n>(function CommandInput({ className, wrapperClassName, ...props }, ref) {\n const styles = useStyles()\n\n return (\n <div\n data-slot=\"command-input-wrapper\"\n {...{ [SLOT_ATTR]: \"command-input-wrapper\" }}\n className={mergeClasses(styles.inputWrapper, wrapperClassName)}\n >\n <SearchIcon className={styles.searchIcon} />\n <AutocompletePrimitive.Input\n ref={ref}\n data-slot=\"command-input\"\n {...{ [SLOT_ATTR]: \"command-input\" }}\n className={mergeClasses(styles.input, className)}\n {...props}\n />\n </div>\n )\n})\n\n/** Base UI owns the list's and the options' ids: the input's `aria-controls` and\n * `aria-activedescendant` point at them. */\nexport type CommandListProps = Omit<\n React.ComponentProps<\"div\">,\n \"children\" | \"id\"\n> & {\n /** The items: a function of each match of the root's `items`, or static content. */\n children?: React.ReactNode | CommandRenderItem\n}\n\n/**\n * The listbox. It is named \"Suggestions\" unless the caller names it: a translated `aria-label`\n * for another locale, or `aria-labelledby`, which wins over both.\n */\nexport const CommandList = React.forwardRef<HTMLDivElement, CommandListProps>(\n function CommandList(\n {\n className,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n ...props\n },\n ref\n ) {\n const styles = useStyles()\n\n return (\n <AutocompletePrimitive.List\n ref={ref}\n data-slot=\"command-list\"\n {...{ [SLOT_ATTR]: \"command-list\" }}\n className={mergeClasses(styles.list, className)}\n aria-labelledby={ariaLabelledBy}\n aria-label={ariaLabel ?? (ariaLabelledBy ? undefined : \"Suggestions\")}\n {...props}\n />\n )\n }\n)\n\nexport type CommandEmptyProps = React.ComponentProps<\"div\">\n\n/** Shows its children while no item matches. It stays mounted (a live region) and is empty otherwise. */\nexport const CommandEmpty = React.forwardRef<HTMLDivElement, CommandEmptyProps>(\n function CommandEmpty({ className, ...props }, ref) {\n const styles = useStyles()\n\n return (\n <AutocompletePrimitive.Empty\n ref={ref}\n data-slot=\"command-empty\"\n {...{ [SLOT_ATTR]: \"command-empty\" }}\n className={mergeClasses(styles.empty, className)}\n {...props}\n />\n )\n }\n)\n\nexport type CommandGroupProps = React.ComponentProps<\"div\"> & {\n /** This group's items, for its CommandCollection to render. */\n items?: readonly unknown[]\n}\n\nexport const CommandGroup = React.forwardRef<HTMLDivElement, CommandGroupProps>(\n function CommandGroup({ className, ...props }, ref) {\n const styles = useStyles()\n\n return (\n <AutocompletePrimitive.Group\n ref={ref}\n data-slot=\"command-group\"\n {...{ [SLOT_ATTR]: \"command-group\" }}\n className={mergeClasses(styles.group, className)}\n {...props}\n />\n )\n }\n)\n\nexport type CommandGroupLabelProps = React.ComponentProps<\"div\">\n\n/** Names its CommandGroup for assistive technology. */\nexport const CommandGroupLabel = React.forwardRef<\n HTMLDivElement,\n CommandGroupLabelProps\n>(function CommandGroupLabel({ className, ...props }, ref) {\n const styles = useStyles()\n\n return (\n <AutocompletePrimitive.GroupLabel\n ref={ref}\n data-slot=\"command-group-label\"\n {...{ [SLOT_ATTR]: \"command-group-label\" }}\n className={mergeClasses(styles.groupLabel, className)}\n {...props}\n />\n )\n})\n\nexport type CommandCollectionProps = {\n /** Renders each match of the enclosing CommandGroup's `items`. */\n children: CommandRenderItem\n}\n\n/**\n * Renders a group's matching items.\n * @no-host-element Base UI's Collection renders only the items, so there is no element to take a ref.\n */\nexport const CommandCollection = ({ children }: CommandCollectionProps) => (\n <AutocompletePrimitive.Collection>\n {children}\n </AutocompletePrimitive.Collection>\n)\n\nexport type CommandSeparatorProps = React.ComponentProps<\"div\">\n\n/** A divider between groups. It steps aside while the search text is not empty, as matches regroup. */\nexport const CommandSeparator = React.forwardRef<\n HTMLDivElement,\n CommandSeparatorProps\n>(function CommandSeparator({ className, ...props }, ref) {\n const styles = useStyles()\n const searching = React.useContext(CommandSearchContext).trim() !== \"\"\n\n if (searching) return null\n return (\n <AutocompletePrimitive.Separator\n ref={ref}\n data-slot=\"command-separator\"\n {...{ [SLOT_ATTR]: \"command-separator\" }}\n className={mergeClasses(styles.separator, className)}\n {...props}\n />\n )\n})\n\n/** No `onSelect`: the DOM's would never run on click or Enter; `onClick` does both. */\nexport type CommandItemProps = Omit<\n React.ComponentProps<\"div\">,\n \"id\" | \"onSelect\"\n> & {\n /** The item of `items` this option stands for. */\n value?: unknown\n /** Whether the option ignores pointer and keyboard selection. */\n disabled?: boolean\n /** The option's position among the matches, which spares a DOM lookup. */\n index?: number\n}\n\n/** One option. `onClick` runs on a click and on Enter while the option is highlighted. */\nexport const CommandItem = React.forwardRef<HTMLDivElement, CommandItemProps>(\n function CommandItem({ className, ...props }, ref) {\n const styles = useStyles()\n\n return (\n <AutocompletePrimitive.Item\n ref={ref}\n data-slot=\"command-item\"\n {...{ [SLOT_ATTR]: \"command-item\" }}\n className={mergeClasses(styles.item, className)}\n {...props}\n />\n )\n }\n)\n\nexport type CommandShortcutProps = React.ComponentProps<\"span\">\n\nexport const CommandShortcut = React.forwardRef<\n HTMLSpanElement,\n CommandShortcutProps\n>(function CommandShortcut({ className, ...props }, ref) {\n const styles = useStyles()\n\n return (\n <span\n ref={ref}\n data-slot=\"command-shortcut\"\n {...{ [SLOT_ATTR]: \"command-shortcut\" }}\n className={mergeClasses(styles.shortcut, className)}\n {...props}\n />\n )\n})\n\nexport type CommandLoadingProps = React.ComponentProps<\"div\">\n\n/**\n * A polite live region for the list's status, such as loading. Keep it mounted and change its\n * children: a region that mounts with its message is not announced everywhere.\n */\nexport const CommandLoading = React.forwardRef<\n HTMLDivElement,\n CommandLoadingProps\n>(function CommandLoading({ className, ...props }, ref) {\n const styles = useStyles()\n\n return (\n <AutocompletePrimitive.Status\n ref={ref}\n data-slot=\"command-loading\"\n {...{ [SLOT_ATTR]: \"command-loading\" }}\n className={mergeClasses(styles.loading, className)}\n {...props}\n />\n )\n})\n\nexport { Command as CommandRoot }\n"],"names":["SearchIcon","props","jsx","useStyles","makeZenithStyles","boxModel","tokens.body","tokens.grayA12","shorthands","tokens.radiusMd","tokens.spacingElement2","tokens.grayA3","tokens.spacingElement3","tokens.focusRing","tokens.textSm","tokens.leadingSm","tokens.grayA11","tokens.spacingElement1","tokens.textXs","tokens.leadingXs","tokens.fontWeightMedium","tokens.graySoft","tokens.radiusSm","tokens.accentA3","SLOT_ATTR","CommandSearchContext","React","Command","className","dataSlot","items","filter","itemToStringValue","limit","value","defaultValue","onValueChange","children","ref","styles","typed","setTyped","search","AutocompletePrimitive","next","mergeClasses","title","description","showCloseButton","_ref","jsxs","Dialog","DialogHeader","DialogTitle","DialogDescription","DialogContent","CommandInput","wrapperClassName","CommandList","ariaLabel","ariaLabelledBy","CommandEmpty","CommandGroup","CommandGroupLabel","CommandCollection","CommandSeparator","CommandItem","CommandLoading"],"mappings":"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"}
1
+ {"version":3,"file":"command.js","sources":["../../../src/components/command/command.tsx"],"sourcesContent":["import * as React from \"react\"\nimport { Autocomplete as AutocompletePrimitive } from \"@base-ui/react/autocomplete\"\nimport { mergeClasses, shorthands } from \"@epilot/zenith-runtime/v1\"\n\nimport { SLOT_ATTR } from \"../../renderer/contract\"\nimport { makeZenithStyles } from \"../../styles/make-styles\"\nimport { boxModel } from \"../../styles/host-reset\"\nimport * as tokens from \"../../tokens\"\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n type DialogProps,\n} from \"../dialog/dialog\"\n\nconst SearchIcon = (props: React.SVGProps<SVGSVGElement>) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n height=\"24px\"\n viewBox=\"0 -960 960 960\"\n width=\"24px\"\n fill=\"currentColor\"\n {...props}\n >\n <path d=\"M380-320q-109 0-184.5-75.5T120-580q0-109 75.5-184.5T380-840q109 0 184.5 75.5T640-580q0 44-14 83t-38 69l224 224q11 11 11 28t-11 28q-11 11-28 11t-28-11L532-372q-30 24-69 38t-83 14Zm0-80q75 0 127.5-52.5T560-580q0-75-52.5-127.5T380-760q-75 0-127.5 52.5T200-580q0 75 52.5 127.5T380-400Z\" />\n </svg>\n)\n\nconst useStyles = makeZenithStyles({\n root: {\n ...boxModel,\n backgroundColor: tokens.body,\n color: tokens.grayA12,\n display: \"flex\",\n height: \"100%\",\n width: \"100%\",\n flexDirection: \"column\",\n overflowX: \"hidden\",\n overflowY: \"hidden\",\n ...shorthands.borderRadius(tokens.radiusMd),\n },\n inputWrapper: {\n ...boxModel,\n display: \"flex\",\n alignItems: \"center\",\n ...shorthands.gap(tokens.spacingElement2),\n ...shorthands.borderBottom(\"1px\", \"solid\", tokens.grayA3),\n paddingLeft: tokens.spacingElement3,\n paddingRight: tokens.spacingElement3,\n // The input's focus ring, drawn on the whole search row: the row holds the inline padding, so a\n // ring on the input itself ran through the first letter. `:focus-within` because the input is\n // the row's only focusable element and a text input matches :focus-visible whenever it has\n // focus. Inset (negative), not the outward +2px every other audited control uses: the row sits\n // flush against the edges of the Command root, which clips overflow for its rounded corners.\n \"&:focus-within\": {\n outlineWidth: \"2px\",\n outlineStyle: \"solid\",\n outlineOffset: \"-2px\",\n outlineColor: tokens.focusRing,\n },\n },\n searchIcon: {\n ...boxModel,\n width: \"1.25rem\",\n height: \"1.25rem\",\n flexShrink: 0,\n opacity: 0.5,\n },\n input: {\n ...boxModel,\n height: \"3rem\",\n display: \"flex\",\n width: \"100%\",\n ...shorthands.borderRadius(tokens.radiusMd),\n backgroundColor: \"transparent\",\n paddingTop: tokens.spacingElement3,\n paddingBottom: tokens.spacingElement3,\n fontSize: tokens.textSm,\n lineHeight: tokens.leadingSm,\n outlineStyle: \"none\",\n \"::placeholder\": {\n color: tokens.grayA11,\n },\n \":disabled\": {\n cursor: \"not-allowed\",\n opacity: 0.5,\n },\n },\n list: {\n overflowX: \"hidden\",\n overflowY: \"auto\",\n scrollPaddingTop: tokens.spacingElement1,\n scrollPaddingBottom: tokens.spacingElement1,\n },\n empty: {\n ...boxModel,\n paddingTop: \"1.5rem\",\n paddingBottom: \"1.5rem\",\n textAlign: \"center\",\n fontSize: tokens.textSm,\n lineHeight: tokens.leadingSm,\n color: tokens.grayA11,\n // Base UI keeps the empty state mounted as a live region and empties it while items match.\n \":empty\": {\n paddingTop: 0,\n paddingBottom: 0,\n },\n },\n group: {\n ...boxModel,\n color: tokens.grayA12,\n overflowX: \"hidden\",\n overflowY: \"hidden\",\n ...shorthands.padding(tokens.spacingElement1),\n },\n groupLabel: {\n ...boxModel,\n color: tokens.grayA11,\n paddingLeft: tokens.spacingElement2,\n paddingRight: tokens.spacingElement2,\n paddingTop: \"0.375rem\",\n paddingBottom: \"0.375rem\",\n fontSize: tokens.textXs,\n lineHeight: tokens.leadingXs,\n fontWeight: tokens.fontWeightMedium,\n },\n separator: {\n ...boxModel,\n backgroundColor: tokens.graySoft,\n marginLeft: `calc(-1 * ${tokens.spacingElement1})`,\n marginRight: `calc(-1 * ${tokens.spacingElement1})`,\n height: \"1px\",\n },\n item: {\n ...boxModel,\n position: \"relative\",\n display: \"flex\",\n cursor: \"default\",\n alignItems: \"center\",\n ...shorthands.gap(tokens.spacingElement2),\n ...shorthands.borderRadius(tokens.radiusSm),\n paddingLeft: tokens.spacingElement2,\n paddingRight: tokens.spacingElement2,\n paddingTop: \"0.375rem\",\n paddingBottom: \"0.375rem\",\n fontSize: tokens.textSm,\n lineHeight: tokens.leadingSm,\n outlineStyle: \"none\",\n userSelect: \"none\",\n color: tokens.grayA12,\n \"&[data-highlighted]\": {\n backgroundColor: tokens.accentA3,\n },\n \":hover\": {\n backgroundColor: tokens.accentA3,\n },\n \"&[data-disabled]\": {\n pointerEvents: \"none\",\n opacity: 0.5,\n },\n \"& svg\": {\n pointerEvents: \"none\",\n flexShrink: 0,\n width: \"1rem\",\n height: \"1rem\",\n },\n \"& svg:not([class*='text-'])\": {\n color: tokens.grayA11,\n },\n },\n shortcut: {\n color: tokens.grayA11,\n marginLeft: \"auto\",\n fontSize: tokens.textXs,\n lineHeight: tokens.leadingXs,\n letterSpacing: \"0.1em\",\n },\n loading: {\n color: tokens.grayA11,\n },\n dialogContent: {\n ...boxModel,\n overflowX: \"hidden\",\n overflowY: \"hidden\",\n ...shorthands.padding(0),\n },\n dialogCommand: {\n [`& [${SLOT_ATTR}=\"command-group-label\"]`]: {\n color: tokens.grayA11,\n paddingLeft: tokens.spacingElement2,\n paddingRight: tokens.spacingElement2,\n fontWeight: tokens.fontWeightMedium,\n },\n [`& [${SLOT_ATTR}=\"command-input-wrapper\"]`]: {\n height: \"3rem\",\n },\n [`& [${SLOT_ATTR}=\"command-group\"]`]: {\n paddingLeft: tokens.spacingElement2,\n paddingRight: tokens.spacingElement2,\n },\n [`& [${SLOT_ATTR}=\"command-item\"]`]: {\n paddingLeft: tokens.spacingElement2,\n paddingRight: tokens.spacingElement2,\n paddingTop: tokens.spacingElement3,\n paddingBottom: tokens.spacingElement3,\n },\n [`& [${SLOT_ATTR}=\"command-item\"] svg`]: {\n width: \"1.25rem\",\n height: \"1.25rem\",\n },\n [`& [${SLOT_ATTR}=\"command-input\"]`]: {\n height: \"3rem\",\n },\n },\n srOnly: {\n ...boxModel,\n position: \"absolute\",\n width: \"1px\",\n height: \"1px\",\n paddingTop: 0,\n paddingBottom: 0,\n paddingLeft: 0,\n paddingRight: 0,\n marginTop: \"-1px\",\n marginBottom: \"-1px\",\n marginLeft: \"-1px\",\n marginRight: \"-1px\",\n overflowX: \"hidden\",\n overflowY: \"hidden\",\n clip: \"rect(0, 0, 0, 0)\",\n whiteSpace: \"nowrap\",\n ...shorthands.borderWidth(0),\n },\n})\n\n/**\n * Whether an item matches the search text. `itemToString` is the string Command matches an\n * object item by. Typed as a method so a filter written for the caller's own item type is accepted.\n */\nexport type CommandFilter = {\n bivarianceHack(\n item: unknown,\n query: string,\n itemToString?: (item: unknown) => string\n ): boolean\n}[\"bivarianceHack\"]\n\n/** Renders one item (or one group) of `items`; `index` is its position among the matches. */\nexport type CommandRenderItem = {\n bivarianceHack(item: unknown, index: number): React.ReactNode\n}[\"bivarianceHack\"]\n\n/** The string an object item is matched by and announced as. */\nexport type CommandItemToString = {\n bivarianceHack(item: unknown): string\n}[\"bivarianceHack\"]\n\n/**\n * Filtering, as Base UI's Autocomplete does it: the items are data, matched against the search\n * text, and the list renders the matches.\n */\nexport type CommandRootProps = {\n /**\n * The items to filter: a flat array, or groups shaped `{ items: [...] }`, which the list renders\n * as one group each, with a collection inside that renders the group's matches. Required:\n * without it nothing would filter and the empty state would show beside the options.\n */\n items: readonly unknown[]\n /**\n * Whether an item matches the search text. Defaults to a locale-aware, case-insensitive\n * \"contains\" on the item's string (`label` for `{ value, label }` objects). `null` turns\n * filtering off, for items the caller has already filtered (a server-side search).\n */\n filter?: CommandFilter | null\n /** The string an object item is matched by. `{ value, label }` items need none: `label` is used. */\n itemToStringValue?: CommandItemToString\n /** The most matches to render. All of them by default. */\n limit?: number\n /** The search text, when controlled. */\n value?: string\n /** The search text it starts with, when uncontrolled. */\n defaultValue?: string\n /** Called with the new search text as the user types. */\n onValueChange?: (value: string) => void\n}\n\n/**\n * never exported it and its only consumer is `field/field-combobox.tsx`, which builds its listbox\n * out of these pieces. This was a decision, not an oversight: a public Command is a surface nobody\n * has reviewed as public API, and exporting it after 0.1 is additive and non-breaking, whereas un-\n * exporting it would not be.\n * @internal not part of the 0.1 public API. Command is fully implemented and tested, but the barrel\n */\nexport type CommandProps = Omit<React.ComponentProps<\"div\">, \"defaultValue\"> &\n CommandRootProps & {\n \"data-slot\"?: string\n }\n\n/** The search text, for parts that change while a search is under way (the separators). */\nconst CommandSearchContext = React.createContext(\"\")\n\n/**\n * Base UI's Autocomplete, inline and always open: the search input filters the list in place.\n * The first match stays highlighted, so Enter runs it.\n */\nexport const Command = React.forwardRef<HTMLDivElement, CommandProps>(\n function Command(\n {\n className,\n \"data-slot\": dataSlot = \"command\",\n items,\n filter,\n itemToStringValue,\n limit,\n value,\n defaultValue,\n onValueChange,\n children,\n ...props\n },\n ref\n ) {\n const styles = useStyles()\n // Base UI keeps the search text to itself; Command mirrors it for the separators.\n const [typed, setTyped] = React.useState(defaultValue ?? \"\")\n const search = value ?? typed\n\n return (\n <AutocompletePrimitive.Root\n inline\n open\n autoHighlight=\"always\"\n keepHighlight\n items={items}\n filter={filter}\n itemToStringValue={itemToStringValue}\n limit={limit}\n value={value}\n defaultValue={defaultValue}\n onValueChange={(next: string) => {\n setTyped(next)\n onValueChange?.(next)\n }}\n >\n <CommandSearchContext.Provider value={search}>\n <div\n ref={ref}\n data-slot={dataSlot}\n {...{ [SLOT_ATTR]: dataSlot }}\n className={mergeClasses(styles.root, className)}\n {...props}\n >\n {children}\n </div>\n </CommandSearchContext.Provider>\n </AutocompletePrimitive.Root>\n )\n }\n)\n\nexport type CommandDialogProps = Omit<DialogProps, \"children\"> &\n CommandRootProps & {\n children?: React.ReactNode\n title?: string\n description?: string\n className?: string\n showCloseButton?: boolean\n }\n\nexport const CommandDialog = React.forwardRef<HTMLElement, CommandDialogProps>(\n function CommandDialog(\n {\n title = \"Command Palette\",\n description = \"Search for a command to run...\",\n children,\n className,\n showCloseButton = true,\n items,\n filter,\n itemToStringValue,\n limit,\n value,\n defaultValue,\n onValueChange,\n ...props\n },\n _ref\n ) {\n const styles = useStyles()\n\n return (\n <Dialog {...props}>\n <DialogHeader className={styles.srOnly}>\n <DialogTitle>{title}</DialogTitle>\n <DialogDescription>{description}</DialogDescription>\n </DialogHeader>\n <DialogContent\n className={mergeClasses(styles.dialogContent, className)}\n showCloseButton={showCloseButton}\n >\n <Command\n className={styles.dialogCommand}\n items={items}\n filter={filter}\n itemToStringValue={itemToStringValue}\n limit={limit}\n value={value}\n defaultValue={defaultValue}\n onValueChange={onValueChange}\n >\n {children}\n </Command>\n </DialogContent>\n </Dialog>\n )\n }\n)\n\nexport type CommandInputProps = Omit<\n React.ComponentProps<\"input\">,\n \"value\" | \"defaultValue\" | \"type\"\n> & {\n wrapperClassName?: string\n}\n\nexport const CommandInput = React.forwardRef<\n HTMLInputElement,\n CommandInputProps\n>(function CommandInput({ className, wrapperClassName, ...props }, ref) {\n const styles = useStyles()\n\n return (\n <div\n data-slot=\"command-input-wrapper\"\n {...{ [SLOT_ATTR]: \"command-input-wrapper\" }}\n className={mergeClasses(styles.inputWrapper, wrapperClassName)}\n >\n <SearchIcon className={styles.searchIcon} />\n <AutocompletePrimitive.Input\n ref={ref}\n data-slot=\"command-input\"\n {...{ [SLOT_ATTR]: \"command-input\" }}\n className={mergeClasses(styles.input, className)}\n {...props}\n />\n </div>\n )\n})\n\n/** Base UI owns the list's and the options' ids: the input's `aria-controls` and\n * `aria-activedescendant` point at them. */\nexport type CommandListProps = Omit<\n React.ComponentProps<\"div\">,\n \"children\" | \"id\"\n> & {\n /** The items: a function of each match of the root's `items`, or static content. */\n children?: React.ReactNode | CommandRenderItem\n}\n\n/**\n * The listbox. It is named \"Suggestions\" unless the caller names it: a translated `aria-label`\n * for another locale, or `aria-labelledby`, which wins over both.\n */\nexport const CommandList = React.forwardRef<HTMLDivElement, CommandListProps>(\n function CommandList(\n {\n className,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n ...props\n },\n ref\n ) {\n const styles = useStyles()\n\n return (\n <AutocompletePrimitive.List\n ref={ref}\n data-slot=\"command-list\"\n {...{ [SLOT_ATTR]: \"command-list\" }}\n className={mergeClasses(styles.list, className)}\n aria-labelledby={ariaLabelledBy}\n aria-label={ariaLabel ?? (ariaLabelledBy ? undefined : \"Suggestions\")}\n {...props}\n />\n )\n }\n)\n\nexport type CommandEmptyProps = React.ComponentProps<\"div\">\n\n/** Shows its children while no item matches. It stays mounted (a live region) and is empty otherwise. */\nexport const CommandEmpty = React.forwardRef<HTMLDivElement, CommandEmptyProps>(\n function CommandEmpty({ className, ...props }, ref) {\n const styles = useStyles()\n\n return (\n <AutocompletePrimitive.Empty\n ref={ref}\n data-slot=\"command-empty\"\n {...{ [SLOT_ATTR]: \"command-empty\" }}\n className={mergeClasses(styles.empty, className)}\n {...props}\n />\n )\n }\n)\n\nexport type CommandGroupProps = React.ComponentProps<\"div\"> & {\n /** This group's items, for the collection inside the group to render. */\n items?: readonly unknown[]\n}\n\nexport const CommandGroup = React.forwardRef<HTMLDivElement, CommandGroupProps>(\n function CommandGroup({ className, ...props }, ref) {\n const styles = useStyles()\n\n return (\n <AutocompletePrimitive.Group\n ref={ref}\n data-slot=\"command-group\"\n {...{ [SLOT_ATTR]: \"command-group\" }}\n className={mergeClasses(styles.group, className)}\n {...props}\n />\n )\n }\n)\n\nexport type CommandGroupLabelProps = React.ComponentProps<\"div\">\n\n/** Names its group for assistive technology. */\nexport const CommandGroupLabel = React.forwardRef<\n HTMLDivElement,\n CommandGroupLabelProps\n>(function CommandGroupLabel({ className, ...props }, ref) {\n const styles = useStyles()\n\n return (\n <AutocompletePrimitive.GroupLabel\n ref={ref}\n data-slot=\"command-group-label\"\n {...{ [SLOT_ATTR]: \"command-group-label\" }}\n className={mergeClasses(styles.groupLabel, className)}\n {...props}\n />\n )\n})\n\nexport type CommandCollectionProps = {\n /** Renders each match of the enclosing group's `items`. */\n children: CommandRenderItem\n}\n\n/**\n * Renders a group's matching items.\n * @no-host-element Base UI's Collection renders only the items, so there is no element to take a ref.\n */\nexport const CommandCollection = ({ children }: CommandCollectionProps) => (\n <AutocompletePrimitive.Collection>\n {children}\n </AutocompletePrimitive.Collection>\n)\n\nexport type CommandSeparatorProps = React.ComponentProps<\"div\">\n\n/** A divider between groups. It steps aside while the search text is not empty, as matches regroup. */\nexport const CommandSeparator = React.forwardRef<\n HTMLDivElement,\n CommandSeparatorProps\n>(function CommandSeparator({ className, ...props }, ref) {\n const styles = useStyles()\n const searching = React.useContext(CommandSearchContext).trim() !== \"\"\n\n if (searching) return null\n return (\n <AutocompletePrimitive.Separator\n ref={ref}\n data-slot=\"command-separator\"\n {...{ [SLOT_ATTR]: \"command-separator\" }}\n className={mergeClasses(styles.separator, className)}\n {...props}\n />\n )\n})\n\n/** No `onSelect`: the DOM's would never run on click or Enter; `onClick` does both. */\nexport type CommandItemProps = Omit<\n React.ComponentProps<\"div\">,\n \"id\" | \"onSelect\"\n> & {\n /** The item of `items` this option stands for. */\n value?: unknown\n /** Whether the option ignores pointer and keyboard selection. */\n disabled?: boolean\n /** The option's position among the matches, which spares a DOM lookup. */\n index?: number\n}\n\n/** One option. `onClick` runs on a click and on Enter while the option is highlighted. */\nexport const CommandItem = React.forwardRef<HTMLDivElement, CommandItemProps>(\n function CommandItem({ className, ...props }, ref) {\n const styles = useStyles()\n\n return (\n <AutocompletePrimitive.Item\n ref={ref}\n data-slot=\"command-item\"\n {...{ [SLOT_ATTR]: \"command-item\" }}\n className={mergeClasses(styles.item, className)}\n {...props}\n />\n )\n }\n)\n\nexport type CommandShortcutProps = React.ComponentProps<\"span\">\n\nexport const CommandShortcut = React.forwardRef<\n HTMLSpanElement,\n CommandShortcutProps\n>(function CommandShortcut({ className, ...props }, ref) {\n const styles = useStyles()\n\n return (\n <span\n ref={ref}\n data-slot=\"command-shortcut\"\n {...{ [SLOT_ATTR]: \"command-shortcut\" }}\n className={mergeClasses(styles.shortcut, className)}\n {...props}\n />\n )\n})\n\nexport type CommandLoadingProps = React.ComponentProps<\"div\">\n\n/**\n * A polite live region for the list's status, such as loading. Keep it mounted and change its\n * children: a region that mounts with its message is not announced everywhere.\n */\nexport const CommandLoading = React.forwardRef<\n HTMLDivElement,\n CommandLoadingProps\n>(function CommandLoading({ className, ...props }, ref) {\n const styles = useStyles()\n\n return (\n <AutocompletePrimitive.Status\n ref={ref}\n data-slot=\"command-loading\"\n {...{ [SLOT_ATTR]: \"command-loading\" }}\n className={mergeClasses(styles.loading, className)}\n {...props}\n />\n )\n})\n\nexport { Command as CommandRoot }\n"],"names":["SearchIcon","props","jsx","useStyles","makeZenithStyles","boxModel","tokens.body","tokens.grayA12","shorthands","tokens.radiusMd","tokens.spacingElement2","tokens.grayA3","tokens.spacingElement3","tokens.focusRing","tokens.textSm","tokens.leadingSm","tokens.grayA11","tokens.spacingElement1","tokens.textXs","tokens.leadingXs","tokens.fontWeightMedium","tokens.graySoft","tokens.radiusSm","tokens.accentA3","SLOT_ATTR","CommandSearchContext","React","Command","className","dataSlot","items","filter","itemToStringValue","limit","value","defaultValue","onValueChange","children","ref","styles","typed","setTyped","search","AutocompletePrimitive","next","mergeClasses","title","description","showCloseButton","_ref","jsxs","Dialog","DialogHeader","DialogTitle","DialogDescription","DialogContent","CommandInput","wrapperClassName","CommandList","ariaLabel","ariaLabelledBy","CommandEmpty","CommandGroup","CommandGroupLabel","CommandCollection","CommandSeparator","CommandItem","CommandLoading"],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -5644,9 +5644,9 @@ type CommandItemToString = {
5644
5644
  */
5645
5645
  type CommandRootProps = {
5646
5646
  /**
5647
- * The items to filter: a flat array, or groups shaped `{ items: [...] }` that the list renders
5648
- * with CommandGroup and CommandCollection. Required: without it nothing would filter and the
5649
- * empty state would show beside the options.
5647
+ * The items to filter: a flat array, or groups shaped `{ items: [...] }`, which the list renders
5648
+ * as one group each, with a collection inside that renders the group's matches. Required:
5649
+ * without it nothing would filter and the empty state would show beside the options.
5650
5650
  */
5651
5651
  items: readonly unknown[];
5652
5652
  /**
@@ -5677,12 +5677,12 @@ type CommandListProps = Omit<React.ComponentProps<"div">, "children" | "id"> & {
5677
5677
  };
5678
5678
  type CommandEmptyProps = React.ComponentProps<"div">;
5679
5679
  type CommandGroupProps = React.ComponentProps<"div"> & {
5680
- /** This group's items, for its CommandCollection to render. */
5680
+ /** This group's items, for the collection inside the group to render. */
5681
5681
  items?: readonly unknown[];
5682
5682
  };
5683
5683
  type CommandGroupLabelProps = React.ComponentProps<"div">;
5684
5684
  type CommandCollectionProps = {
5685
- /** Renders each match of the enclosing CommandGroup's `items`. */
5685
+ /** Renders each match of the enclosing group's `items`. */
5686
5686
  children: CommandRenderItem;
5687
5687
  };
5688
5688
  type CommandSeparatorProps = React.ComponentProps<"div">;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@epilot/zenith-react",
3
- "version": "0.3.0-next.13",
3
+ "version": "0.3.0-next.15",
4
4
  "description": "Zenith React components, styled with Griffel and designed for isolated micro-frontend delivery",
5
5
  "type": "module",
6
6
  "repository": {
@@ -149,19 +149,19 @@
149
149
  "zenith": {
150
150
  "next": {
151
151
  "mainSha": "16dfd03884fe211c78e36ad8c3c3ba39dd79f628",
152
- "buildJobUrl": "https://gitlab.com/e-pilot/product/frontend/zenith/-/jobs/17656771258",
153
- "pipelineId": 3016769563,
152
+ "buildJobUrl": "https://gitlab.com/e-pilot/product/frontend/zenith/-/jobs/17657313486",
153
+ "pipelineId": 3016840182,
154
154
  "included": [
155
155
  {
156
156
  "iid": 151,
157
- "headSha": "6a28165a386e2ac0587f1e188a7a893859b930d8",
157
+ "headSha": "69ad9b4550a6c131cb2e1a3f1fceea1c992caf9b",
158
158
  "url": "https://gitlab.com/e-pilot/product/frontend/zenith/-/merge_requests/151",
159
159
  "order": 1
160
160
  }
161
161
  ],
162
162
  "leftOut": [],
163
163
  "versions": {
164
- "react": "0.3.0-next.13",
164
+ "react": "0.3.0-next.15",
165
165
  "runtime": "0.3.0-next.1"
166
166
  },
167
167
  "runtime": {