@echothink-ui/search 0.1.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 (40) hide show
  1. package/README.md +5 -0
  2. package/dist/components/AgentSearchSuggestion.d.ts +2 -0
  3. package/dist/components/AppCommandSearch.d.ts +2 -0
  4. package/dist/components/AppDomainSearch.d.ts +2 -0
  5. package/dist/components/EntitySearchInput.d.ts +4 -0
  6. package/dist/components/GlobalCommandPalette.d.ts +4 -0
  7. package/dist/components/ProjectCommandPalette.d.ts +2 -0
  8. package/dist/components/RecentItems.d.ts +2 -0
  9. package/dist/components/ResourceSearch.d.ts +2 -0
  10. package/dist/components/SavedSearches.d.ts +2 -0
  11. package/dist/components/SearchFacetPanel.d.ts +2 -0
  12. package/dist/components/SearchResultsPanel.d.ts +2 -0
  13. package/dist/components/SemanticSearchResult.d.ts +2 -0
  14. package/dist/components/searchUtils.d.ts +3 -0
  15. package/dist/components/types.d.ts +175 -0
  16. package/dist/index.cjs +1224 -0
  17. package/dist/index.cjs.map +1 -0
  18. package/dist/index.css +1460 -0
  19. package/dist/index.css.map +1 -0
  20. package/dist/index.d.ts +16 -0
  21. package/dist/index.js +1185 -0
  22. package/dist/index.js.map +1 -0
  23. package/package.json +43 -0
  24. package/src/components/AgentSearchSuggestion.tsx +44 -0
  25. package/src/components/AppCommandSearch.tsx +163 -0
  26. package/src/components/AppDomainSearch.tsx +90 -0
  27. package/src/components/EntitySearchInput.tsx +165 -0
  28. package/src/components/GlobalCommandPalette.tsx +182 -0
  29. package/src/components/ProjectCommandPalette.tsx +24 -0
  30. package/src/components/RecentItems.tsx +136 -0
  31. package/src/components/ResourceSearch.tsx +27 -0
  32. package/src/components/SavedSearches.tsx +27 -0
  33. package/src/components/SearchFacetPanel.tsx +100 -0
  34. package/src/components/SearchResultsPanel.tsx +327 -0
  35. package/src/components/SemanticSearchResult.tsx +52 -0
  36. package/src/components/searchUtils.ts +20 -0
  37. package/src/components/types.ts +208 -0
  38. package/src/index.test.tsx +254 -0
  39. package/src/index.tsx +55 -0
  40. package/src/styles.css +1716 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.tsx","../src/components/AgentSearchSuggestion.tsx","../src/components/AppCommandSearch.tsx","../src/components/AppDomainSearch.tsx","../src/components/EntitySearchInput.tsx","../src/components/GlobalCommandPalette.tsx","../src/components/searchUtils.ts","../src/components/ProjectCommandPalette.tsx","../src/components/RecentItems.tsx","../src/components/ResourceSearch.tsx","../src/components/SavedSearches.tsx","../src/components/SearchFacetPanel.tsx","../src/components/SearchResultsPanel.tsx","../src/components/SemanticSearchResult.tsx"],"sourcesContent":["import \"./styles.css\";\n\nexport type {\n AgentSearchSuggestionProps,\n AppCommandItem,\n AppCommandKind,\n AppCommandSearchProps,\n AppDomainSearchProps,\n CommandItem,\n EntitySearchInputProps,\n EntitySuggestion,\n GlobalCommandPaletteProps,\n ProjectCommandPaletteProps,\n RecentItem,\n RecentItemsProps,\n ResourceSearchProps,\n SavedSearch,\n SavedSearchesProps,\n SearchFacet,\n SearchFacetOption,\n SearchFacetPanelProps,\n SearchResultGroup,\n SearchResultItem,\n SearchResultMetadata,\n SearchResultsPanelProps,\n SemanticSearchResultProps\n} from \"./components/types\";\nexport { AgentSearchSuggestion } from \"./components/AgentSearchSuggestion\";\nexport { AppCommandSearch } from \"./components/AppCommandSearch\";\nexport { AppDomainSearch } from \"./components/AppDomainSearch\";\nexport { EntitySearchInput } from \"./components/EntitySearchInput\";\nexport { GlobalCommandPalette } from \"./components/GlobalCommandPalette\";\nexport { ProjectCommandPalette } from \"./components/ProjectCommandPalette\";\nexport { RecentItems } from \"./components/RecentItems\";\nexport { ResourceSearch } from \"./components/ResourceSearch\";\nexport { SavedSearches } from \"./components/SavedSearches\";\nexport { SearchFacetPanel } from \"./components/SearchFacetPanel\";\nexport { SearchResultsPanel } from \"./components/SearchResultsPanel\";\nexport { SemanticSearchResult } from \"./components/SemanticSearchResult\";\n\nexport const SearchComponentNames = [\n \"GlobalCommandPalette\",\n \"ProjectCommandPalette\",\n \"AppCommandSearch\",\n \"SearchResultsPanel\",\n \"SearchFacetPanel\",\n \"SavedSearches\",\n \"RecentItems\",\n \"EntitySearchInput\",\n \"AppDomainSearch\",\n \"ResourceSearch\",\n \"SemanticSearchResult\",\n \"AgentSearchSuggestion\"\n] as const;\nexport type SearchComponentName = (typeof SearchComponentNames)[number];\n","import * as React from \"react\";\nimport { AgentRunningIcon, ChevronRightIcon } from \"@echothink-ui/icons\";\nimport type { AgentSearchSuggestionProps } from \"./types\";\n\nexport function AgentSearchSuggestion({\n suggestion,\n className,\n onClick,\n ...props\n}: AgentSearchSuggestionProps) {\n const handleClick = React.useCallback<React.MouseEventHandler<HTMLButtonElement>>(\n (event) => {\n onClick?.(event);\n if (!event.defaultPrevented) {\n suggestion.onSelect?.();\n }\n },\n [onClick, suggestion]\n );\n\n return (\n <button\n {...props}\n type=\"button\"\n className={[\"eth-search-agent-suggestion\", className].filter(Boolean).join(\" \")}\n data-eth-component=\"AgentSearchSuggestion\"\n onClick={handleClick}\n >\n <span className=\"eth-search-agent-suggestion__icon\" aria-hidden=\"true\">\n <AgentRunningIcon size={16} />\n </span>\n <span className=\"eth-search-agent-suggestion__body\">\n <span className=\"eth-search-agent-suggestion__label\">{suggestion.label}</span>\n {suggestion.rationale ? (\n <span className=\"eth-search-agent-suggestion__rationale\">{suggestion.rationale}</span>\n ) : null}\n </span>\n <span className=\"eth-search-agent-suggestion__action\" aria-hidden=\"true\">\n Run\n <ChevronRightIcon size={16} />\n </span>\n </button>\n );\n}\n","import * as React from \"react\";\nimport { Button, SearchInput } from \"@echothink-ui/core\";\nimport type { AppCommandItem, AppCommandSearchProps } from \"./types\";\n\nfunction commandMatches(command: AppCommandItem, query: string) {\n const normalized = query.trim().toLowerCase();\n if (!normalized) return true;\n return [\n command.label,\n command.description,\n command.domain,\n command.kind,\n command.shortcut,\n command.status\n ]\n .filter(Boolean)\n .some((value) => String(value).toLowerCase().includes(normalized));\n}\n\nfunction kindLabel(kind: AppCommandItem[\"kind\"]) {\n if (kind === \"app-domain\") return \"Domain\";\n if (kind === \"resource\") return \"Resource\";\n return \"Action\";\n}\n\nexport function AppCommandSearch({\n value,\n defaultValue = \"\",\n placeholder = \"Search app domains, resources, or commands\",\n commands = [],\n kbdHint = \"⌘K\",\n scopeLabel = \"App domains\",\n emptyText = \"No commands found\",\n onChange,\n onSelect,\n onSubmit,\n onKeyDown,\n className,\n ...props\n}: AppCommandSearchProps) {\n const [internalValue, setInternalValue] = React.useState(defaultValue);\n const [activeIndex, setActiveIndex] = React.useState(0);\n const currentValue = value ?? internalValue;\n const filteredCommands = React.useMemo(\n () => commands.filter((command) => commandMatches(command, currentValue)),\n [commands, currentValue]\n );\n const activeCommand = filteredCommands[activeIndex];\n\n React.useEffect(() => {\n setActiveIndex((index) => Math.min(index, Math.max(0, filteredCommands.length - 1)));\n }, [filteredCommands.length]);\n\n const updateValue = (nextValue: string) => {\n if (value === undefined) setInternalValue(nextValue);\n onChange?.(nextValue);\n };\n\n const selectCommand = (command: AppCommandItem) => {\n command.onSelect?.();\n onSelect?.(command.id);\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLElement>) => {\n onKeyDown?.(event);\n if (event.defaultPrevented) return;\n if (!filteredCommands.length) return;\n\n if (event.key === \"ArrowDown\") {\n event.preventDefault();\n setActiveIndex((index) => Math.min(filteredCommands.length - 1, index + 1));\n return;\n }\n\n if (event.key === \"ArrowUp\") {\n event.preventDefault();\n setActiveIndex((index) => Math.max(0, index - 1));\n return;\n }\n\n if (event.key === \"Enter\") {\n event.preventDefault();\n selectCommand(filteredCommands[activeIndex]);\n }\n };\n\n return (\n <section\n {...props}\n className={[\"eth-search-app-command\", className].filter(Boolean).join(\" \")}\n data-eth-component=\"AppCommandSearch\"\n onKeyDown={handleKeyDown}\n >\n <form\n className=\"eth-search-app-command__bar\"\n role=\"search\"\n onSubmit={(event) => {\n event.preventDefault();\n if (activeCommand) {\n selectCommand(activeCommand);\n return;\n }\n onSubmit?.(currentValue);\n }}\n >\n <SearchInput\n className=\"eth-search-app-command__input\"\n density=\"comfortable\"\n value={currentValue}\n placeholder={placeholder}\n onChange={(event: React.ChangeEvent<HTMLInputElement>) =>\n updateValue(event.currentTarget.value)\n }\n onClear={() => updateValue(\"\")}\n />\n <div className=\"eth-search-app-command__controls\">\n {kbdHint ? <kbd className=\"eth-search-app-command__kbd\">{kbdHint}</kbd> : null}\n <Button density=\"compact\" intent=\"primary\" type=\"submit\">\n Run\n </Button>\n </div>\n </form>\n\n <div className=\"eth-search-app-command__summary\">\n <span>{scopeLabel}</span>\n <strong>{filteredCommands.length} available</strong>\n </div>\n\n <div className=\"eth-search-app-command__list\" role=\"listbox\" aria-label=\"App commands\">\n {filteredCommands.map((command, index) => {\n const active = index === activeIndex;\n return (\n <button\n key={command.id}\n type=\"button\"\n role=\"option\"\n aria-selected={active}\n className={`eth-search-app-command__item ${\n active ? \"eth-search-app-command__item--active\" : \"\"\n }`}\n onMouseEnter={() => setActiveIndex(index)}\n onClick={() => selectCommand(command)}\n >\n <span className=\"eth-search-app-command__kind\">{kindLabel(command.kind)}</span>\n <span className=\"eth-search-app-command__copy\">\n <strong>{command.label}</strong>\n {command.description ? <small>{command.description}</small> : null}\n </span>\n <span className=\"eth-search-app-command__meta\">\n {command.domain ? <span>{command.domain}</span> : null}\n {command.shortcut ? <kbd>{command.shortcut}</kbd> : null}\n {command.status ? <small>{command.status}</small> : null}\n </span>\n </button>\n );\n })}\n {!filteredCommands.length ? (\n <p className=\"eth-search-app-command__empty\">{emptyText}</p>\n ) : null}\n </div>\n </section>\n );\n}\n","import * as React from \"react\";\nimport { SearchInput } from \"@echothink-ui/core\";\nimport type { AppDomainSearchProps } from \"./types\";\n\nexport function AppDomainSearch({\n appDomainRef,\n placeholder = \"Search app-domain catalog or instances\",\n className,\n suggestions = [],\n value,\n defaultValue,\n onChange,\n onSearch,\n onSelect,\n open: _open,\n defaultOpen: _defaultOpen,\n loading: _loading,\n emptyText: _emptyText,\n onOpenChange: _onOpenChange,\n ...props\n}: AppDomainSearchProps) {\n const [internalValue, setInternalValue] = React.useState(() =>\n Array.isArray(defaultValue) ? defaultValue.join(\",\") : String(defaultValue ?? \"\")\n );\n const currentValue = value ?? internalValue;\n const scopeLabel = appDomainRef ? appDomainRef.replace(/[-_]/g, \" \") : \"All app domains\";\n\n const update = (nextValue: string) => {\n if (value === undefined) {\n setInternalValue(nextValue);\n }\n onChange?.(nextValue);\n onSearch?.(nextValue);\n };\n\n const choose = (suggestion: (typeof suggestions)[number]) => {\n if (value === undefined) {\n setInternalValue(suggestion.label);\n }\n onChange?.(suggestion.id);\n onSearch?.(suggestion.label);\n onSelect?.(suggestion);\n };\n\n return (\n <section\n {...props}\n className={`eth-search-app-domain ${className ?? \"\"}`}\n data-app-domain-ref={appDomainRef}\n data-eth-component=\"AppDomainSearch\"\n >\n <div className=\"eth-search-app-domain__header\">\n <span>App-domain search</span>\n <strong>{scopeLabel}</strong>\n </div>\n <SearchInput\n value={currentValue}\n placeholder={placeholder}\n onChange={(event) => update(event.currentTarget.value)}\n onClear={() => update(\"\")}\n className=\"eth-search-app-domain__input\"\n />\n <div className=\"eth-search-app-domain__summary\" aria-live=\"polite\">\n <span>\n {suggestions.length\n ? `${suggestions.length} matching domains`\n : \"Catalog and running instances\"}\n </span>\n <span>{appDomainRef ? \"Scoped instance\" : \"Global catalog\"}</span>\n </div>\n {suggestions.length ? (\n <ul className=\"eth-search-app-domain__results\" aria-label=\"App-domain search results\">\n {suggestions.map((suggestion) => (\n <li key={suggestion.id}>\n <button type=\"button\" onClick={() => choose(suggestion)}>\n <span className=\"eth-search-app-domain__result-copy\">\n <strong>{suggestion.label}</strong>\n {suggestion.kind ? <small>{suggestion.kind}</small> : null}\n </span>\n {suggestion.meta ? (\n <span className=\"eth-search-app-domain__result-meta\">{suggestion.meta}</span>\n ) : null}\n </button>\n </li>\n ))}\n </ul>\n ) : null}\n </section>\n );\n}\n","import * as React from \"react\";\nimport { SearchInput } from \"@echothink-ui/core\";\nimport type { EntitySearchInputProps } from \"./types\";\n\nexport function EntitySearchInput({\n placeholder = \"Search\",\n onSearch,\n suggestions = [],\n value,\n defaultValue = \"\",\n onChange,\n onSelect,\n suggestionsLabel = \"Entity suggestions\",\n resultsLabel = \"Entity matches\",\n loadingLabel = \"Searching entities\",\n open,\n defaultOpen = false,\n loading = false,\n emptyText = \"No matching entities\",\n onOpenChange,\n className,\n onBlur,\n onKeyDown,\n \"data-eth-component\": dataEthComponent = \"EntitySearchInput\",\n ...props\n}: EntitySearchInputProps & { \"data-eth-component\"?: string }) {\n const listboxId = React.useId().replace(/:/g, \"\");\n const [internalValue, setInternalValue] = React.useState(defaultValue);\n const [internalOpen, setInternalOpen] = React.useState(defaultOpen);\n const [selectedId, setSelectedId] = React.useState<string | undefined>(() => {\n const initialValue = value ?? defaultValue;\n return suggestions.find((suggestion) => suggestion.id === initialValue)?.id;\n });\n const currentValue = value ?? internalValue;\n const selectedSuggestion =\n suggestions.find((suggestion) => suggestion.id === currentValue) ??\n suggestions.find((suggestion) => suggestion.id === selectedId);\n const displayValue =\n selectedSuggestion?.id === currentValue ? selectedSuggestion.label : currentValue;\n const isOpen = open ?? internalOpen;\n\n const setOpen = (nextOpen: boolean) => {\n if (open === undefined) {\n setInternalOpen(nextOpen);\n }\n onOpenChange?.(nextOpen);\n };\n\n const update = (nextValue: string) => {\n if (value === undefined) {\n setInternalValue(nextValue);\n }\n setSelectedId(undefined);\n onChange?.(nextValue);\n onSearch?.(nextValue);\n setOpen(Boolean(nextValue || suggestions.length || loading));\n };\n\n const choose = (suggestion: (typeof suggestions)[number]) => {\n if (value === undefined) {\n setInternalValue(suggestion.label);\n }\n setSelectedId(suggestion.id);\n onChange?.(suggestion.id);\n onSearch?.(suggestion.label);\n onSelect?.(suggestion);\n setOpen(false);\n };\n\n const clear = () => {\n if (value === undefined) {\n setInternalValue(\"\");\n }\n setSelectedId(undefined);\n onChange?.(\"\");\n onSearch?.(\"\");\n setOpen(false);\n };\n\n const handleBlur = (event: React.FocusEvent<HTMLDivElement>) => {\n onBlur?.(event);\n if (!event.currentTarget.contains(event.relatedTarget as Node | null)) {\n setOpen(false);\n }\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n onKeyDown?.(event);\n if (event.defaultPrevented) return;\n if (event.key === \"Escape\") {\n setOpen(false);\n event.stopPropagation();\n }\n if (event.key === \"ArrowDown\" && suggestions.length) {\n setOpen(true);\n }\n };\n\n return (\n <div\n {...props}\n className={`eth-search-entity-input ${className ?? \"\"}`}\n data-eth-component={dataEthComponent}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n >\n <SearchInput\n aria-controls={isOpen ? listboxId : undefined}\n aria-expanded={isOpen}\n aria-haspopup=\"listbox\"\n autoComplete=\"off\"\n className=\"eth-search-entity-input__field\"\n value={displayValue}\n placeholder={placeholder}\n onFocus={() => setOpen(Boolean(suggestions.length || loading))}\n onChange={(event) => update(event.currentTarget.value)}\n onClear={clear}\n />\n {isOpen ? (\n <div\n className=\"eth-search-entity-input__popover\"\n id={listboxId}\n role=\"listbox\"\n aria-label={suggestionsLabel}\n >\n <div className=\"eth-search-entity-input__summary\" aria-live=\"polite\">\n <span>{loading ? loadingLabel : resultsLabel}</span>\n <strong>\n {loading\n ? \"Loading\"\n : `${suggestions.length} result${suggestions.length === 1 ? \"\" : \"s\"}`}\n </strong>\n </div>\n {suggestions.length ? (\n <ul className=\"eth-search-entity-input__list\">\n {suggestions.map((suggestion) => {\n const isSelected = suggestion.id === selectedSuggestion?.id;\n return (\n <li key={suggestion.id}>\n <button\n type=\"button\"\n role=\"option\"\n aria-selected={isSelected}\n onClick={() => choose(suggestion)}\n >\n <span className=\"eth-search-entity-input__copy\">\n <strong>{suggestion.label}</strong>\n {suggestion.kind ? <small>{suggestion.kind}</small> : null}\n </span>\n <span className=\"eth-search-entity-input__meta\">\n {isSelected ? \"Selected\" : suggestion.meta}\n </span>\n </button>\n </li>\n );\n })}\n </ul>\n ) : (\n <p className=\"eth-search-entity-input__empty\">{loading ? \"Loading...\" : emptyText}</p>\n )}\n </div>\n ) : null}\n </div>\n );\n}\n","import * as React from \"react\";\nimport { SearchInput } from \"@echothink-ui/core\";\nimport { CloseIcon } from \"@echothink-ui/icons\";\nimport type { CommandItem, GlobalCommandPaletteProps } from \"./types\";\nimport { filterCommands, groupBy } from \"./searchUtils\";\n\nexport function GlobalCommandPalette({\n open,\n onClose,\n commands,\n heading = \"Global command palette\",\n contextLabel,\n query,\n searchPlaceholder = \"Search commands\",\n onQueryChange,\n className,\n \"data-eth-component\": dataEthComponent = \"GlobalCommandPalette\",\n ...props\n}: GlobalCommandPaletteProps & { \"data-eth-component\"?: string }) {\n const [internalQuery, setInternalQuery] = React.useState(\"\");\n const [activeIndex, setActiveIndex] = React.useState(0);\n const generatedId = React.useId().replace(/:/g, \"\");\n const searchRef = React.useRef<HTMLDivElement>(null);\n const currentQuery = query ?? internalQuery;\n const filtered = React.useMemo(\n () => filterCommands(commands, currentQuery),\n [commands, currentQuery]\n );\n const grouped = groupBy(filtered, (command) => command.group ?? \"Commands\");\n const titleId = `eth-search-command-palette-title-${generatedId}`;\n const listboxId = `eth-search-command-palette-listbox-${generatedId}`;\n const activeOptionId = filtered.length ? `${listboxId}-option-${activeIndex}` : undefined;\n const resultCountLabel = `${filtered.length} ${filtered.length === 1 ? \"command\" : \"commands\"} ${\n currentQuery.trim() ? \"matched\" : \"available\"\n }`;\n\n React.useEffect(() => {\n if (!open) return;\n setActiveIndex(0);\n const input = searchRef.current?.querySelector(\"input\");\n input?.focus();\n }, [open]);\n\n React.useEffect(() => {\n setActiveIndex((index) => Math.min(index, Math.max(0, filtered.length - 1)));\n }, [filtered.length]);\n\n if (!open) return null;\n\n const setQuery = (nextQuery: string) => {\n setInternalQuery(nextQuery);\n onQueryChange?.(nextQuery);\n };\n\n const selectCommand = (command: CommandItem) => {\n command.onSelect();\n onClose();\n };\n\n const onKeyDown = (event: React.KeyboardEvent) => {\n if (event.key === \"Escape\") {\n event.preventDefault();\n onClose();\n return;\n }\n if (event.key === \"ArrowDown\") {\n event.preventDefault();\n if (!filtered.length) return;\n setActiveIndex((index) => Math.min(filtered.length - 1, index + 1));\n return;\n }\n if (event.key === \"ArrowUp\") {\n event.preventDefault();\n if (!filtered.length) return;\n setActiveIndex((index) => Math.max(0, index - 1));\n return;\n }\n if (event.key === \"Enter\") {\n event.preventDefault();\n const command = filtered[activeIndex];\n if (command) selectCommand(command);\n }\n };\n\n let flatIndex = 0;\n return (\n <div\n {...props}\n className={`eth-search-command-palette ${className ?? \"\"}`}\n data-eth-component={dataEthComponent}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={titleId}\n onKeyDown={onKeyDown}\n >\n <button\n type=\"button\"\n className=\"eth-search-command-palette__scrim\"\n aria-label=\"Close command palette\"\n onClick={onClose}\n />\n <section className=\"eth-search-command-palette__panel\" aria-labelledby={titleId}>\n <header className=\"eth-search-command-palette__header\">\n <div className=\"eth-search-command-palette__heading\">\n <h2 id={titleId}>{heading}</h2>\n <div className=\"eth-search-command-palette__meta\">\n {contextLabel ? <span>{contextLabel}</span> : null}\n <span aria-live=\"polite\">{resultCountLabel}</span>\n </div>\n </div>\n <button\n type=\"button\"\n className=\"eth-search-command-palette__close\"\n aria-label=\"Close command palette\"\n onClick={onClose}\n >\n <CloseIcon size={16} />\n </button>\n </header>\n <div ref={searchRef} className=\"eth-search-command-palette__search\">\n <SearchInput\n value={currentQuery}\n placeholder={searchPlaceholder}\n aria-controls={listboxId}\n aria-activedescendant={activeOptionId}\n onChange={(event) => setQuery(event.currentTarget.value)}\n onClear={() => setQuery(\"\")}\n />\n </div>\n <div\n id={listboxId}\n className=\"eth-search-command-palette__results\"\n role=\"listbox\"\n aria-label=\"Commands\"\n >\n {grouped.map(([group, items], groupIndex) => {\n const groupHeadingId = `${listboxId}-group-${groupIndex}`;\n return (\n <section\n key={group}\n className=\"eth-search-command-palette__group\"\n role=\"group\"\n aria-labelledby={groupHeadingId}\n >\n <h3 id={groupHeadingId}>{group}</h3>\n {items.map((command) => {\n const index = flatIndex;\n flatIndex += 1;\n const active = index === activeIndex;\n return (\n <button\n key={command.id}\n id={`${listboxId}-option-${index}`}\n type=\"button\"\n role=\"option\"\n aria-selected={active}\n className={`eth-search-command-palette__item ${active ? \"eth-search-command-palette__item--active\" : \"\"}`}\n onMouseEnter={() => setActiveIndex(index)}\n onClick={() => selectCommand(command)}\n >\n <span className=\"eth-search-command-palette__item-copy\">\n <strong>{command.label}</strong>\n {command.hint ? <small>{command.hint}</small> : null}\n </span>\n {command.shortcut ? <kbd>{command.shortcut}</kbd> : null}\n </button>\n );\n })}\n </section>\n );\n })}\n {!filtered.length ? (\n <div className=\"eth-search-command-palette__empty\" role=\"status\">\n <strong>No commands found</strong>\n <span>Try a different command, resource, or setting.</span>\n </div>\n ) : null}\n </div>\n </section>\n </div>\n );\n}\n","import type { CommandItem } from \"./types\";\n\nexport function filterCommands(commands: CommandItem[], query: string) {\n const normalized = query.trim().toLowerCase();\n if (!normalized) return commands;\n return commands.filter((command) =>\n [command.label, command.hint, command.group, command.shortcut]\n .filter(Boolean)\n .some((value) => String(value).toLowerCase().includes(normalized))\n );\n}\n\nexport function groupBy<T>(items: T[], getKey: (item: T) => string) {\n const groups = new Map<string, T[]>();\n items.forEach((item) => {\n const key = getKey(item);\n groups.set(key, [...(groups.get(key) ?? []), item]);\n });\n return Array.from(groups.entries());\n}\n","import * as React from \"react\";\nimport { GlobalCommandPalette } from \"./GlobalCommandPalette\";\nimport type { ProjectCommandPaletteProps } from \"./types\";\n\nexport function ProjectCommandPalette({\n projectRef,\n className,\n contextLabel = `Project ${projectRef}`,\n heading = \"Project command palette\",\n searchPlaceholder = \"Search project commands\",\n ...props\n}: ProjectCommandPaletteProps) {\n return (\n <GlobalCommandPalette\n {...props}\n contextLabel={contextLabel}\n heading={heading}\n className={`eth-search-project-command-palette ${className ?? \"\"}`}\n data-project-ref={projectRef}\n data-eth-component=\"ProjectCommandPalette\"\n searchPlaceholder={searchPlaceholder}\n />\n );\n}\n","import * as React from \"react\";\nimport {\n AgentRunningIcon,\n ChevronRightIcon,\n DocumentIcon,\n FolderIcon,\n MessageIcon,\n PlayIcon,\n SearchIcon,\n StatusIcon,\n TableIcon\n} from \"@echothink-ui/icons\";\nimport type { RecentItemsProps } from \"./types\";\n\nfunction formatRecentKind(kind: string) {\n return kind\n .split(/[-_\\s]+/)\n .filter(Boolean)\n .map((part) => part.charAt(0).toUpperCase() + part.slice(1))\n .join(\" \");\n}\n\nfunction RecentItemIcon({ kind }: { kind: string }) {\n const normalizedKind = kind.toLowerCase();\n\n if (normalizedKind.includes(\"agent\")) return <AgentRunningIcon size={16} />;\n if (normalizedKind.includes(\"document\") || normalizedKind.includes(\"file\")) {\n return <DocumentIcon size={16} />;\n }\n if (normalizedKind.includes(\"project\") || normalizedKind.includes(\"folder\")) {\n return <FolderIcon size={16} />;\n }\n if (normalizedKind.includes(\"mail\") || normalizedKind.includes(\"message\")) {\n return <MessageIcon size={16} />;\n }\n if (normalizedKind.includes(\"dataset\") || normalizedKind.includes(\"table\")) {\n return <TableIcon size={16} />;\n }\n if (normalizedKind.includes(\"action\") || normalizedKind.includes(\"command\")) {\n return <PlayIcon size={16} />;\n }\n if (normalizedKind.includes(\"task\") || normalizedKind.includes(\"wave\")) {\n return <StatusIcon size={16} />;\n }\n\n return <SearchIcon size={16} />;\n}\n\nexport function RecentItems({\n items,\n emptyText = \"No recent items\",\n onSelect,\n className,\n \"aria-label\": ariaLabel = \"Recent items\",\n ...props\n}: RecentItemsProps) {\n const classNames = [\"eth-search-recent-items\", className].filter(Boolean).join(\" \");\n\n if (!items.length) {\n return (\n <section\n {...props}\n aria-label={ariaLabel}\n className={classNames}\n data-eth-component=\"RecentItems\"\n >\n <div className=\"eth-search-recent-items__empty\" role=\"status\">\n {emptyText}\n </div>\n </section>\n );\n }\n\n return (\n <section\n {...props}\n aria-label={ariaLabel}\n className={classNames}\n data-eth-component=\"RecentItems\"\n >\n <ul>\n {items.map((item) => {\n const kindLabel = formatRecentKind(item.kind);\n const rowLabel = `Open ${item.label}, ${kindLabel}, last visited ${item.visitedAt}`;\n const content = (\n <>\n <span className=\"eth-search-recent-items__icon\" aria-hidden=\"true\">\n <RecentItemIcon kind={item.kind} />\n </span>\n <span className=\"eth-search-recent-items__copy\">\n <span className=\"eth-search-recent-items__label\">{item.label}</span>\n {item.description ? (\n <span className=\"eth-search-recent-items__description\">{item.description}</span>\n ) : null}\n </span>\n <span className=\"eth-search-recent-items__kind\">{kindLabel}</span>\n <span className=\"eth-search-recent-items__visited\">\n <span className=\"eth-search-recent-items__visited-label\">Last visited</span>\n <time dateTime={item.visitedAt}>{item.visitedAt}</time>\n </span>\n <ChevronRightIcon\n className=\"eth-search-recent-items__arrow\"\n size={16}\n aria-hidden=\"true\"\n />\n </>\n );\n\n return (\n <li key={item.id}>\n {item.href ? (\n <a\n className=\"eth-search-recent-items__row\"\n href={item.href}\n aria-label={rowLabel}\n onClick={() => onSelect?.(item.id)}\n >\n {content}\n </a>\n ) : (\n <button\n className=\"eth-search-recent-items__row\"\n type=\"button\"\n aria-label={rowLabel}\n onClick={() => onSelect?.(item.id)}\n >\n {content}\n </button>\n )}\n </li>\n );\n })}\n </ul>\n </section>\n );\n}\n","import { EntitySearchInput } from \"./EntitySearchInput\";\nimport type { ResourceSearchProps } from \"./types\";\n\nexport function ResourceSearch({\n resourceScope,\n placeholder = \"Search resources\",\n emptyText = \"No matching resources\",\n suggestionsLabel = \"Resource suggestions\",\n resultsLabel = \"Resource matches\",\n loadingLabel = \"Searching resources\",\n className,\n ...props\n}: ResourceSearchProps) {\n return (\n <EntitySearchInput\n {...props}\n placeholder={placeholder}\n emptyText={emptyText}\n suggestionsLabel={suggestionsLabel}\n resultsLabel={resultsLabel}\n loadingLabel={loadingLabel}\n className={[\"eth-search-resource\", className].filter(Boolean).join(\" \")}\n data-resource-scope={resourceScope}\n data-eth-component=\"ResourceSearch\"\n />\n );\n}\n","import * as React from \"react\";\nimport { Button, IconButton } from \"@echothink-ui/core\";\nimport type { SavedSearchesProps } from \"./types\";\n\nexport function SavedSearches({ searches, onRun, onDelete, className, ...props }: SavedSearchesProps) {\n return (\n <section\n {...props}\n className={`eth-search-saved-searches ${className ?? \"\"}`}\n data-eth-component=\"SavedSearches\"\n >\n <ul>\n {searches.map((search) => (\n <li key={search.id}>\n <div>\n <strong>{search.label}</strong>\n <code>{search.query}</code>\n <small>{search.updatedAt}</small>\n </div>\n {onRun ? <Button intent=\"secondary\" density=\"compact\" onClick={() => onRun(search.id)}>Run</Button> : null}\n {onDelete ? <IconButton label=\"Delete saved search\" intent=\"ghost\" icon={<span aria-hidden>X</span>} onClick={() => onDelete(search.id)} /> : null}\n </li>\n ))}\n </ul>\n </section>\n );\n}\n","import type { SearchFacetPanelProps } from \"./types\";\n\nexport function SearchFacetPanel({\n facets,\n selected,\n onChange,\n className,\n \"aria-label\": ariaLabel,\n ...props\n}: SearchFacetPanelProps) {\n const selectedTotal = facets.reduce(\n (total, facet) => total + (selected[facet.id]?.length ?? 0),\n 0\n );\n\n const toggle = (facetId: string, value: string, checked: boolean) => {\n const current = selected[facetId] ?? [];\n\n onChange({\n ...selected,\n [facetId]: checked ? [...current, value] : current.filter((item) => item !== value)\n });\n };\n\n const clearAll = () => {\n onChange(Object.fromEntries(facets.map((facet) => [facet.id, []])));\n };\n\n return (\n <aside\n className={[\"eth-search-facet-panel\", className].filter(Boolean).join(\" \")}\n data-eth-component=\"SearchFacetPanel\"\n aria-label={ariaLabel ?? \"Search filters\"}\n {...props}\n >\n <div className=\"eth-search-facet-panel__header\">\n <div>\n <h2 className=\"eth-search-facet-panel__title\">Filters</h2>\n <p className=\"eth-search-facet-panel__summary\">\n {selectedTotal > 0 ? `${selectedTotal} selected` : \"Refine results\"}\n </p>\n </div>\n {selectedTotal > 0 ? (\n <button type=\"button\" className=\"eth-search-facet-panel__clear\" onClick={clearAll}>\n Clear\n </button>\n ) : null}\n </div>\n\n {facets.length > 0 ? (\n <div className=\"eth-search-facet-panel__groups\">\n {facets.map((facet) => (\n <fieldset key={facet.id} className=\"eth-search-facet-panel__group\">\n <legend className=\"eth-search-facet-panel__legend\">\n <span>{facet.label}</span>\n </legend>\n <div className=\"eth-search-facet-panel__options\">\n {facet.options.map((option) => {\n const checked = (selected[facet.id] ?? []).includes(option.value);\n\n return (\n <label\n key={option.value}\n className={[\n \"eth-search-facet-panel__option\",\n checked ? \"eth-search-facet-panel__option--checked\" : \"\",\n option.disabled ? \"eth-search-facet-panel__option--disabled\" : \"\"\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n <input\n type=\"checkbox\"\n checked={checked}\n disabled={option.disabled}\n value={option.value}\n onChange={(event) =>\n toggle(facet.id, option.value, event.currentTarget.checked)\n }\n />\n <span className=\"eth-search-facet-panel__control\" aria-hidden=\"true\" />\n <span className=\"eth-search-facet-panel__option-main\">\n <span className=\"eth-search-facet-panel__option-label\">{option.label}</span>\n {typeof option.count === \"number\" ? (\n <span className=\"eth-search-facet-panel__option-count\">{option.count}</span>\n ) : null}\n </span>\n </label>\n );\n })}\n </div>\n </fieldset>\n ))}\n </div>\n ) : (\n <p className=\"eth-search-facet-panel__empty\">No filters available</p>\n )}\n </aside>\n );\n}\n","import type * as React from \"react\";\nimport type {\n SearchResultGroup,\n SearchResultItem,\n SearchResultMetadata,\n SearchResultsPanelProps,\n} from \"./types\";\n\nfunction getGroupItems(group: SearchResultGroup) {\n return group.results ?? group.items ?? [];\n}\n\nfunction getGroupLabel(group: SearchResultGroup) {\n return (\n group.label ?? group.title ?? group.entityType ?? group.type ?? \"Results\"\n );\n}\n\nfunction getGroupDomId(group: SearchResultGroup, index: number) {\n const seed = String(group.id ?? getGroupLabel(group))\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, \"-\")\n .replace(/(^-|-$)/g, \"\");\n\n return `search-results-${seed || \"group\"}-${index}`;\n}\n\nfunction getResultTitle(result: SearchResultItem) {\n return result.title ?? result.name ?? result.label ?? \"Untitled result\";\n}\n\nfunction getResultDescription(result: SearchResultItem) {\n return result.description ?? result.excerpt;\n}\n\nfunction getResultHref(result: SearchResultItem) {\n return result.href ?? result.url;\n}\n\nfunction getResultId(\n result: SearchResultItem,\n group: SearchResultGroup,\n index: number,\n) {\n return (\n result.id ??\n `${group.id ?? getGroupLabel(group)}-${getResultTitle(result)}-${index}`\n );\n}\n\nfunction getTotalCount(groups: SearchResultGroup[], totalCount?: number) {\n if (typeof totalCount === \"number\") {\n return totalCount;\n }\n\n return groups.reduce((sum, group) => sum + getGroupItems(group).length, 0);\n}\n\nfunction getEntityInitial(label: string) {\n return label.trim().slice(0, 1).toUpperCase();\n}\n\nfunction isLabeledMetadata(\n metadata: SearchResultMetadata,\n): metadata is { label?: React.ReactNode; value?: React.ReactNode } {\n return (\n typeof metadata === \"object\" &&\n metadata !== null &&\n !Array.isArray(metadata) &&\n \"value\" in metadata\n );\n}\n\nfunction normalizeMetadataValue(\n metadata: SearchResultMetadata,\n): React.ReactNode {\n if (isLabeledMetadata(metadata)) {\n if (metadata.label && metadata.value !== undefined) {\n return (\n <>\n {metadata.label}: {metadata.value}\n </>\n );\n }\n\n return metadata.value;\n }\n\n return metadata as React.ReactNode;\n}\n\nfunction hasMetadataSourceValue(\n metadata: unknown,\n): metadata is SearchResultMetadata {\n return (\n metadata !== null &&\n metadata !== undefined &&\n metadata !== false &&\n metadata !== \"\"\n );\n}\n\nfunction hasRenderableMetadata(metadata: React.ReactNode) {\n return (\n metadata !== null &&\n metadata !== undefined &&\n metadata !== false &&\n metadata !== \"\"\n );\n}\n\nfunction getMetadata(result: SearchResultItem): React.ReactNode[] {\n const source = result.meta ?? result.metadata;\n const values: SearchResultMetadata[] = Array.isArray(source)\n ? [...source]\n : [];\n\n if (!Array.isArray(source) && hasMetadataSourceValue(source)) {\n values.push(source);\n }\n\n if (result.owner) {\n values.push({ label: \"Owner\", value: result.owner });\n }\n\n if (result.status) {\n values.push(result.status);\n }\n\n if (result.updatedAt) {\n values.push({ label: \"Updated\", value: result.updatedAt });\n }\n\n if (result.version) {\n values.push(`v${result.version}`);\n }\n\n return values.map(normalizeMetadataValue).filter(hasRenderableMetadata);\n}\n\nexport function SearchResultsPanel({\n groups = [],\n query,\n totalCount,\n isLoading = false,\n emptyLabel = \"No results found\",\n className,\n onResultSelect,\n onSelect,\n ...props\n}: SearchResultsPanelProps) {\n const count = getTotalCount(groups, totalCount);\n const hasResults = groups.some((group) => getGroupItems(group).length > 0);\n const classes = [\"eth-search-results-panel\", className]\n .filter(Boolean)\n .join(\" \");\n\n const handleSelect = (\n result: SearchResultItem,\n group: SearchResultGroup,\n resultId: string,\n ) => {\n onResultSelect?.(result, group);\n onSelect?.(result.id ?? resultId);\n };\n\n return (\n <section\n {...props}\n className={classes}\n aria-label={props[\"aria-label\"] ?? \"Search results\"}\n data-eth-component=\"SearchResultsPanel\"\n >\n <header className=\"eth-search-results-panel__summary\">\n <div>\n <p className=\"eth-search-results-panel__eyebrow\">Search results</p>\n <h3 className=\"eth-search-results-panel__title\">\n {isLoading\n ? \"Searching...\"\n : `${count} result${count === 1 ? \"\" : \"s\"}`}\n </h3>\n </div>\n {query ? (\n <span className=\"eth-search-results-panel__query\">\"{query}\"</span>\n ) : null}\n </header>\n\n {isLoading ? (\n <div className=\"eth-search-results-panel__state\" role=\"status\">\n <p className=\"eth-search-results-panel__loading-copy\">\n Loading results\n </p>\n <span className=\"eth-search-results-panel__skeleton\" />\n <span className=\"eth-search-results-panel__skeleton\" />\n <span className=\"eth-search-results-panel__skeleton\" />\n </div>\n ) : hasResults ? (\n <div className=\"eth-search-results-panel__groups\">\n {groups.map((group, groupIndex) => {\n const items = getGroupItems(group);\n const groupLabel = getGroupLabel(group);\n const groupId = getGroupDomId(group, groupIndex);\n\n if (items.length === 0) {\n return null;\n }\n\n return (\n <section\n className=\"eth-search-results-panel__group\"\n key={group.id ?? `${groupLabel}-${groupIndex}`}\n aria-labelledby={groupId}\n >\n <div className=\"eth-search-results-panel__group-header\">\n <h4\n className=\"eth-search-results-panel__group-title\"\n id={groupId}\n >\n {groupLabel}\n </h4>\n <span className=\"eth-search-results-panel__count\">\n {group.count ?? items.length}\n </span>\n </div>\n\n <div className=\"eth-search-results-panel__list\">\n {items.map((result, index) => {\n const metadata = getMetadata(result);\n const resultId = getResultId(result, group, index);\n const description = getResultDescription(result);\n const href = getResultHref(result);\n const title = getResultTitle(result);\n const resultContent = (\n <>\n <span\n className=\"eth-search-results-panel__entity\"\n aria-hidden=\"true\"\n >\n {getEntityInitial(\n result.entityType ??\n result.type ??\n group.entityType ??\n groupLabel,\n )}\n </span>\n <span className=\"eth-search-results-panel__body\">\n <span className=\"eth-search-results-panel__name\">\n {title}\n </span>\n {description ? (\n <span className=\"eth-search-results-panel__description\">\n {description}\n </span>\n ) : null}\n </span>\n {metadata.length > 0 ? (\n <span className=\"eth-search-results-panel__metadata\">\n {metadata.map((item, metaIndex) => (\n <span\n className=\"eth-search-results-panel__meta\"\n key={metaIndex}\n >\n {item}\n </span>\n ))}\n </span>\n ) : null}\n </>\n );\n\n if (href) {\n return (\n <a\n className=\"eth-search-results-panel__item\"\n href={href}\n key={resultId}\n onClick={\n onResultSelect || onSelect\n ? () => handleSelect(result, group, resultId)\n : undefined\n }\n >\n {resultContent}\n </a>\n );\n }\n\n if (onResultSelect || onSelect) {\n return (\n <button\n className=\"eth-search-results-panel__item\"\n key={resultId}\n type=\"button\"\n onClick={() => handleSelect(result, group, resultId)}\n >\n {resultContent}\n </button>\n );\n }\n\n return (\n <article\n className=\"eth-search-results-panel__item\"\n key={resultId}\n >\n {resultContent}\n </article>\n );\n })}\n </div>\n </section>\n );\n })}\n </div>\n ) : (\n <div className=\"eth-search-results-panel__state\">\n <p className=\"eth-search-results-panel__empty-title\">{emptyLabel}</p>\n {query ? (\n <p className=\"eth-search-results-panel__empty-copy\">\n Try another keyword or remove a filter.\n </p>\n ) : null}\n </div>\n )}\n </section>\n );\n}\n","import * as React from \"react\";\nimport type { SemanticSearchResultProps } from \"./types\";\n\nexport function SemanticSearchResult({ result, className, ...props }: SemanticSearchResultProps) {\n const evidence = result.evidence ?? [];\n\n return (\n <article\n {...props}\n className={`eth-search-semantic-result ${className ?? \"\"}`}\n data-eth-component=\"SemanticSearchResult\"\n >\n <p className=\"eth-search-semantic-result__snippet\">\n {renderHighlightedSnippet(result.snippet, result.highlights ?? [])}\n </p>\n {evidence.length > 0 ? (\n <div className=\"eth-search-semantic-result__evidence\">\n <span className=\"eth-search-semantic-result__evidence-label\">Evidence</span>\n <ul className=\"eth-search-semantic-result__evidence-list\">\n {evidence.map((item) => (\n <li key={item.id}>\n {item.href ? (\n <a className=\"eth-search-semantic-result__evidence-item\" href={item.href}>\n {item.label}\n </a>\n ) : (\n <span className=\"eth-search-semantic-result__evidence-item\">{item.label}</span>\n )}\n </li>\n ))}\n </ul>\n </div>\n ) : null}\n </article>\n );\n}\n\nfunction renderHighlightedSnippet(snippet: string, highlights: Array<[number, number]>) {\n if (!highlights.length) return snippet;\n const sorted = [...highlights].sort((a, b) => a[0] - b[0]);\n const parts: React.ReactNode[] = [];\n let cursor = 0;\n sorted.forEach(([start, end], index) => {\n const safeStart = Math.max(cursor, Math.min(snippet.length, start));\n const safeEnd = Math.max(safeStart, Math.min(snippet.length, end));\n if (safeStart > cursor) parts.push(snippet.slice(cursor, safeStart));\n parts.push(<mark key={index}>{snippet.slice(safeStart, safeEnd)}</mark>);\n cursor = safeEnd;\n });\n if (cursor < snippet.length) parts.push(snippet.slice(cursor));\n return parts;\n}\n"],"mappings":"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","names":["React","import_jsx_runtime","React","import_core","import_jsx_runtime","React","import_core","import_jsx_runtime","React","import_core","import_icons","import_jsx_runtime","import_jsx_runtime","import_icons","import_jsx_runtime","kindLabel","import_jsx_runtime","import_core","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime"]}