@shipfox/react-ui 0.33.0 → 0.33.1

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 (113) hide show
  1. package/dist/components/alert/index.d.ts +1 -1
  2. package/dist/components/avatar/avatar-group.d.ts +1 -1
  3. package/dist/components/avatar/avatar.d.ts +1 -1
  4. package/dist/components/avatar/index.d.ts +2 -2
  5. package/dist/components/badge/badge.d.ts +1 -1
  6. package/dist/components/badge/icon-badge.d.ts +1 -1
  7. package/dist/components/badge/index.d.ts +4 -4
  8. package/dist/components/button/button-link.d.ts +1 -1
  9. package/dist/components/button/button.d.ts +1 -1
  10. package/dist/components/button/icon-button.d.ts +1 -1
  11. package/dist/components/button/index.d.ts +3 -3
  12. package/dist/components/button-group/index.d.ts +1 -1
  13. package/dist/components/calendar/index.d.ts +1 -1
  14. package/dist/components/card/card.d.ts +1 -1
  15. package/dist/components/card/index.d.ts +1 -1
  16. package/dist/components/checkbox/checkbox-label.d.ts +1 -1
  17. package/dist/components/checkbox/checkbox-links.d.ts +1 -1
  18. package/dist/components/checkbox/index.d.ts +3 -3
  19. package/dist/components/code-block/index.d.ts +3 -3
  20. package/dist/components/combobox/combobox.d.ts +1 -1
  21. package/dist/components/combobox/index.d.ts +1 -1
  22. package/dist/components/command/command.d.ts +1 -1
  23. package/dist/components/command/index.d.ts +1 -1
  24. package/dist/components/confetti/index.d.ts +1 -1
  25. package/dist/components/count-up/index.d.ts +1 -1
  26. package/dist/components/dashboard/components/charts/bar-chart.d.ts +1 -1
  27. package/dist/components/dashboard/components/charts/index.d.ts +5 -5
  28. package/dist/components/dashboard/components/charts/line-chart.d.ts +1 -1
  29. package/dist/components/dashboard/components/charts/utils.d.ts +2 -2
  30. package/dist/components/dashboard/components/dashboard-alert.d.ts +1 -1
  31. package/dist/components/dashboard/components/mobile-sidebar.d.ts +1 -1
  32. package/dist/components/dashboard/components/sidebar.d.ts +1 -1
  33. package/dist/components/dashboard/components/topbar-button.d.ts +1 -1
  34. package/dist/components/dashboard/context/dashboard-context.d.ts +2 -2
  35. package/dist/components/dashboard/context/index.d.ts +4 -4
  36. package/dist/components/dashboard/context/types.d.ts +1 -1
  37. package/dist/components/dashboard/context/utils.d.ts +1 -1
  38. package/dist/components/dashboard/index.d.ts +18 -18
  39. package/dist/components/dashboard/pages/index.d.ts +2 -2
  40. package/dist/components/dashboard/table/index.d.ts +2 -2
  41. package/dist/components/dashboard/toolbar/filter-button.d.ts +1 -1
  42. package/dist/components/dashboard/toolbar/index.d.ts +9 -9
  43. package/dist/components/date-picker/index.d.ts +1 -1
  44. package/dist/components/date-time-range-picker/index.d.ts +1 -1
  45. package/dist/components/dot-grid/index.d.ts +1 -1
  46. package/dist/components/dropdown-menu/dropdown-menu.d.ts +1 -1
  47. package/dist/components/dropdown-menu/index.d.ts +1 -1
  48. package/dist/components/dynamic-item/dynamic-item.d.ts +1 -1
  49. package/dist/components/dynamic-item/index.d.ts +1 -1
  50. package/dist/components/empty-state/empty-state.d.ts +1 -1
  51. package/dist/components/empty-state/index.d.ts +1 -1
  52. package/dist/components/form/index.d.ts +1 -1
  53. package/dist/components/icon/custom/index.d.ts +14 -14
  54. package/dist/components/icon/icon.d.ts +1 -1
  55. package/dist/components/icon/index.d.ts +1 -1
  56. package/dist/components/index.d.ts +47 -47
  57. package/dist/components/inline-tips/index.d.ts +1 -1
  58. package/dist/components/input/index.d.ts +1 -1
  59. package/dist/components/interval-selector/hooks/index.d.ts +3 -3
  60. package/dist/components/interval-selector/hooks/use-interval-selector-input.d.ts +1 -1
  61. package/dist/components/interval-selector/hooks/use-interval-selector-navigation.d.ts +1 -1
  62. package/dist/components/interval-selector/hooks/use-interval-selector.d.ts +2 -2
  63. package/dist/components/interval-selector/index.d.ts +2 -2
  64. package/dist/components/interval-selector/interval-selector-calendar.d.ts +1 -1
  65. package/dist/components/interval-selector/interval-selector-input.d.ts +1 -1
  66. package/dist/components/interval-selector/interval-selector-suggestions.d.ts +1 -1
  67. package/dist/components/interval-selector/interval-selector.d.ts +1 -1
  68. package/dist/components/interval-selector/utils/format.d.ts +1 -1
  69. package/dist/components/interval-selector/utils/index.d.ts +2 -2
  70. package/dist/components/item/index.d.ts +1 -1
  71. package/dist/components/kbd/index.d.ts +1 -1
  72. package/dist/components/label/index.d.ts +1 -1
  73. package/dist/components/modal/index.d.ts +1 -1
  74. package/dist/components/moving-border/index.d.ts +1 -1
  75. package/dist/components/popover/index.d.ts +1 -1
  76. package/dist/components/scroll-area/index.d.ts +1 -1
  77. package/dist/components/search/index.d.ts +6 -6
  78. package/dist/components/search/search-inline.d.ts +1 -1
  79. package/dist/components/search/search-modal.d.ts +1 -1
  80. package/dist/components/search/search-trigger.d.ts +1 -1
  81. package/dist/components/select/index.d.ts +1 -1
  82. package/dist/components/select/select.d.ts +1 -1
  83. package/dist/components/sheet/index.d.ts +1 -1
  84. package/dist/components/shiny-text/index.d.ts +1 -1
  85. package/dist/components/shipql-editor/index.d.ts +2 -2
  86. package/dist/components/shipql-editor/lexical/shipql-plugin.d.ts +1 -1
  87. package/dist/components/shipql-editor/shipql-editor-inner.d.ts +1 -1
  88. package/dist/components/shipql-editor/shipql-editor-inner.js +6 -7
  89. package/dist/components/shipql-editor/shipql-editor.d.ts +3 -3
  90. package/dist/components/shipql-editor/suggestions/generate-suggestions.d.ts +2 -2
  91. package/dist/components/shipql-editor/suggestions/shipql-range-facet-panel.d.ts +1 -1
  92. package/dist/components/shipql-editor/suggestions/shipql-suggestion-item.d.ts +1 -1
  93. package/dist/components/shipql-editor/suggestions/shipql-suggestions-dropdown.d.ts +2 -2
  94. package/dist/components/shipql-editor/suggestions/shipql-suggestions-dropdown.js +13 -0
  95. package/dist/components/shipql-editor/suggestions/shipql-suggestions-plugin.d.ts +2 -2
  96. package/dist/components/skeleton/index.d.ts +1 -1
  97. package/dist/components/slider/index.d.ts +1 -1
  98. package/dist/components/switch/index.d.ts +1 -1
  99. package/dist/components/table/index.d.ts +4 -4
  100. package/dist/components/table/table.stories.columns.d.ts +1 -1
  101. package/dist/components/tabs/index.d.ts +1 -1
  102. package/dist/components/textarea/index.d.ts +1 -1
  103. package/dist/components/theme/index.d.ts +1 -1
  104. package/dist/components/theme/theme-provider.d.ts +1 -1
  105. package/dist/components/toast/index.d.ts +2 -2
  106. package/dist/components/tooltip/index.d.ts +1 -1
  107. package/dist/components/typography/index.d.ts +3 -3
  108. package/dist/hooks/index.d.ts +6 -6
  109. package/dist/hooks/useTheme.d.ts +1 -1
  110. package/dist/index.d.ts +4 -4
  111. package/dist/utils/format/index.d.ts +5 -5
  112. package/dist/utils/index.d.ts +6 -6
  113. package/package.json +4 -4
@@ -1,2 +1,2 @@
1
- export * from './inline-tips';
1
+ export * from './inline-tips.js';
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1,2 +1,2 @@
1
- export * from './input';
1
+ export * from './input.js';
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1,4 +1,4 @@
1
- export * from './use-interval-selector';
2
- export * from './use-interval-selector-input';
3
- export * from './use-interval-selector-navigation';
1
+ export * from './use-interval-selector.js';
2
+ export * from './use-interval-selector-input.js';
3
+ export * from './use-interval-selector-navigation.js';
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1,4 +1,4 @@
1
- import type { IntervalSelection } from '../types';
1
+ import type { IntervalSelection } from '../types.js';
2
2
  export interface UseNewIntervalSelectorInputProps {
3
3
  onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;
4
4
  onKeyDown?: (e: React.KeyboardEvent<HTMLInputElement>) => void;
@@ -1,4 +1,4 @@
1
- import type { IntervalSelection, IntervalSuggestion, RelativeSuggestion } from '../types';
1
+ import type { IntervalSelection, IntervalSuggestion, RelativeSuggestion } from '../types.js';
2
2
  interface UseIntervalSelectorNavigationProps {
3
3
  relativeSuggestions: RelativeSuggestion[];
4
4
  intervalSuggestions: IntervalSuggestion[];
@@ -1,6 +1,6 @@
1
1
  import type { DismissableLayerProps } from '@radix-ui/react-dismissable-layer';
2
- import type { IntervalSelectorProps } from '../interval-selector';
3
- import type { IntervalSelection, IntervalSuggestion, RelativeSuggestion } from '../types';
2
+ import type { IntervalSelectorProps } from '../interval-selector.js';
3
+ import type { IntervalSelection, IntervalSuggestion, RelativeSuggestion } from '../types.js';
4
4
  export interface UseIntervalSelectorProps extends Pick<IntervalSelectorProps, 'onSelectionChange'> {
5
5
  relativeSuggestions: RelativeSuggestion[];
6
6
  intervalSuggestions: IntervalSuggestion[];
@@ -1,3 +1,3 @@
1
- export * from './interval-selector';
2
- export * from './types';
1
+ export * from './interval-selector.js';
2
+ export * from './types.js';
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1,4 +1,4 @@
1
- import type { IntervalSelection } from './types';
1
+ import type { IntervalSelection } from './types.js';
2
2
  interface IntervalSelectorCalendarProps {
3
3
  onSelect: (selection: IntervalSelection) => void;
4
4
  }
@@ -1,4 +1,4 @@
1
- import { type UseNewIntervalSelectorInputProps } from './hooks/use-interval-selector-input';
1
+ import { type UseNewIntervalSelectorInputProps } from './hooks/use-interval-selector-input.js';
2
2
  type IntervalSelectorInputProps = {
3
3
  className?: string;
4
4
  inputClassName?: string;
@@ -1,4 +1,4 @@
1
- import type { IntervalSelection, IntervalSuggestion, RelativeSuggestion } from './types';
1
+ import type { IntervalSelection, IntervalSuggestion, RelativeSuggestion } from './types.js';
2
2
  interface IntervalSelectorSuggestionsProps {
3
3
  relativeSuggestions: RelativeSuggestion[];
4
4
  intervalSuggestions: IntervalSuggestion[];
@@ -1,4 +1,4 @@
1
- import type { IntervalSelection, IntervalSuggestion, RelativeSuggestion } from './types';
1
+ import type { IntervalSelection, IntervalSuggestion, RelativeSuggestion } from './types.js';
2
2
  export interface IntervalSelectorProps {
3
3
  selection: IntervalSelection;
4
4
  onSelectionChange: (selection: IntervalSelection) => void;
@@ -1,4 +1,4 @@
1
- import type { IntervalSelection } from '../types';
1
+ import type { IntervalSelection } from '../types.js';
2
2
  export declare function formatSelectionForInput(selection: IntervalSelection): string;
3
3
  interface FormatSelectionParams {
4
4
  selection: IntervalSelection;
@@ -1,3 +1,3 @@
1
- export * from './constants';
2
- export * from './format';
1
+ export * from './constants.js';
2
+ export * from './format.js';
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1,2 +1,2 @@
1
- export * from './item';
1
+ export * from './item.js';
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1,2 +1,2 @@
1
- export * from './kbd';
1
+ export * from './kbd.js';
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1,2 +1,2 @@
1
- export * from './label';
1
+ export * from './label.js';
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1,2 +1,2 @@
1
- export * from './modal';
1
+ export * from './modal.js';
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1,2 +1,2 @@
1
- export * from './moving-border';
1
+ export * from './moving-border.js';
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1,2 +1,2 @@
1
- export * from './popover';
1
+ export * from './popover.js';
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1,2 +1,2 @@
1
- export * from './scroll-area';
1
+ export * from './scroll-area.js';
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1,7 +1,7 @@
1
- export { Search, type SearchProps } from './search';
2
- export { useSearchContext } from './search-context';
3
- export { SearchInline, type SearchInlineProps } from './search-inline';
4
- export { SearchContent, type SearchContentProps, SearchEmpty, type SearchEmptyProps, SearchFooter, type SearchFooterProps, SearchGroup, type SearchGroupProps, SearchInput, type SearchInputProps, SearchItem, type SearchItemProps, SearchList, type SearchListProps, SearchSeparator, type SearchSeparatorProps, } from './search-modal';
5
- export { SearchTrigger, type SearchTriggerProps } from './search-trigger';
6
- export { searchDefaultTransition, searchInputVariants, searchTriggerVariants, } from './search-variants';
1
+ export { Search, type SearchProps } from './search.js';
2
+ export { useSearchContext } from './search-context.js';
3
+ export { SearchInline, type SearchInlineProps } from './search-inline.js';
4
+ export { SearchContent, type SearchContentProps, SearchEmpty, type SearchEmptyProps, SearchFooter, type SearchFooterProps, SearchGroup, type SearchGroupProps, SearchInput, type SearchInputProps, SearchItem, type SearchItemProps, SearchList, type SearchListProps, SearchSeparator, type SearchSeparatorProps, } from './search-modal.js';
5
+ export { SearchTrigger, type SearchTriggerProps } from './search-trigger.js';
6
+ export { searchDefaultTransition, searchInputVariants, searchTriggerVariants, } from './search-variants.js';
7
7
  //# sourceMappingURL=index.d.ts.map
@@ -1,6 +1,6 @@
1
1
  import type { VariantProps } from 'class-variance-authority';
2
2
  import type { ComponentProps } from 'react';
3
- import { searchInputVariants } from './search-variants';
3
+ import { searchInputVariants } from './search-variants.js';
4
4
  export type SearchInlineProps = Omit<ComponentProps<'input'>, 'size'> & VariantProps<typeof searchInputVariants> & {
5
5
  showClearButton?: boolean;
6
6
  onClear?: () => void;
@@ -1,6 +1,6 @@
1
1
  import { Command as CommandPrimitive } from 'cmdk';
2
2
  import type { ComponentProps, ReactNode } from 'react';
3
- import { type ModalContentProps } from '../modal/modal';
3
+ import { type ModalContentProps } from '../modal/modal.js';
4
4
  export type SearchContentProps = {
5
5
  breakpoint?: string;
6
6
  } & Omit<ModalContentProps, 'open' | 'onOpenChange'>;
@@ -1,6 +1,6 @@
1
1
  import type { VariantProps } from 'class-variance-authority';
2
2
  import type { ComponentProps } from 'react';
3
- import { searchTriggerVariants } from './search-variants';
3
+ import { searchTriggerVariants } from './search-variants.js';
4
4
  export type SearchTriggerProps = ComponentProps<'button'> & VariantProps<typeof searchTriggerVariants> & {
5
5
  placeholder?: string;
6
6
  shortcut?: string;
@@ -1,2 +1,2 @@
1
- export * from './select';
1
+ export * from './select.js';
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1,7 +1,7 @@
1
1
  import * as SelectPrimitive from '@radix-ui/react-select';
2
2
  import { type VariantProps } from 'class-variance-authority';
3
3
  import type { ComponentProps } from 'react';
4
- import { type IconName } from '../icon';
4
+ import { type IconName } from '../icon/index.js';
5
5
  declare function Select({ ...props }: ComponentProps<typeof SelectPrimitive.Root>): import("react/jsx-runtime").JSX.Element;
6
6
  declare function SelectGroup({ ...props }: ComponentProps<typeof SelectPrimitive.Group>): import("react/jsx-runtime").JSX.Element;
7
7
  declare function SelectValue({ ...props }: ComponentProps<typeof SelectPrimitive.Value>): import("react/jsx-runtime").JSX.Element;
@@ -1,2 +1,2 @@
1
- export * from './sheet';
1
+ export * from './sheet.js';
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1,2 +1,2 @@
1
- export * from './shiny-text';
1
+ export * from './shiny-text.js';
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1,3 +1,3 @@
1
- export type { LeafAstNode } from './lexical/shipql-leaf-node';
2
- export { type FacetDef, type FacetMetadata, type FormatLeafDisplay, type LeafChangePayload, type RangeFacetConfig, ShipQLEditor, type ShipQLEditorProps, } from './shipql-editor';
1
+ export type { LeafAstNode } from './lexical/shipql-leaf-node.js';
2
+ export { type FacetDef, type FacetMetadata, type FormatLeafDisplay, type LeafChangePayload, type RangeFacetConfig, ShipQLEditor, type ShipQLEditorProps, } from './shipql-editor.js';
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1,4 +1,4 @@
1
- import { type LeafAstNode } from './shipql-leaf-node';
1
+ import { type LeafAstNode } from './shipql-leaf-node.js';
2
2
  /** Payload: the Lexical node key of the leaf to remove. */
3
3
  export declare const REMOVE_LEAF_COMMAND: import("lexical").LexicalCommand<string>;
4
4
  interface ShipQLPluginProps {
@@ -1,3 +1,3 @@
1
- import type { ShipQLEditorInnerProps } from './shipql-editor';
1
+ import type { ShipQLEditorInnerProps } from './shipql-editor.js';
2
2
  export default function ShipQLEditorInner({ onChange, onLeafFocus, placeholder, className, disabled, mode, text, editorKey, isError, onTextChange, onClear, onToggleMode, facets, currentFacet, setCurrentFacet, valueSuggestions, isLoadingValueSuggestions, onLeafChange, formatLeafDisplay, allowFreeText, }: ShipQLEditorInnerProps): import("react/jsx-runtime").JSX.Element;
3
3
  //# sourceMappingURL=shipql-editor-inner.d.ts.map
@@ -24,7 +24,6 @@ const INPUT_ERROR_CLASSES = 'shadow-border-error';
24
24
  const BUTTON_CLASSES = 'shrink-0 text-foreground-neutral-subtle hover:text-foreground-neutral-base transition-all duration-150 flex justify-center items-center cursor-pointer w-28 sm:w-32 h-full';
25
25
  export default function ShipQLEditorInner({ onChange, onLeafFocus, placeholder, className, disabled, mode, text, editorKey, isError, onTextChange, onClear, onToggleMode, facets, currentFacet, setCurrentFacet, valueSuggestions, isLoadingValueSuggestions, onLeafChange, formatLeafDisplay, allowFreeText }) {
26
26
  const [suggestionsOpen, setSuggestionsOpen] = useState(false);
27
- const [suggestionsSuppressed, setSuggestionsSuppressed] = useState(false);
28
27
  const [selectedIndex, setSelectedIndex] = useState(-1);
29
28
  const [items, setItems] = useState([]);
30
29
  const [focusedLeafNode, setFocusedLeafNode] = useState(null);
@@ -35,6 +34,7 @@ export default function ShipQLEditorInner({ onChange, onLeafFocus, placeholder,
35
34
  const applyRef = useRef(null);
36
35
  const negationPrefixRef = useRef('');
37
36
  const containerRef = useRef(null);
37
+ const suggestionsSuppressedRef = useRef(false);
38
38
  const hasSuggestions = Boolean(facets && facets.length > 0);
39
39
  const showValueActions = Boolean(currentFacet);
40
40
  const isRangeContext = items.length === 1 && items[0]?.type === 'range-slider';
@@ -61,17 +61,15 @@ export default function ShipQLEditorInner({ onChange, onLeafFocus, placeholder,
61
61
  setShowSyntaxHelp((prev)=>!prev);
62
62
  }, []);
63
63
  const handleDismissSuggestions = useCallback(()=>{
64
- setSuggestionsSuppressed(true);
64
+ suggestionsSuppressedRef.current = true;
65
65
  setSuggestionsOpen(false);
66
66
  }, []);
67
67
  const handleSuggestionsOpenChange = useCallback((open)=>{
68
- if (open && suggestionsSuppressed) return;
68
+ if (open && suggestionsSuppressedRef.current) return;
69
69
  setSuggestionsOpen(open);
70
- }, [
71
- suggestionsSuppressed
72
- ]);
70
+ }, []);
73
71
  const handleEditorMouseDownCapture = useCallback(()=>{
74
- setSuggestionsSuppressed(false);
72
+ suggestionsSuppressedRef.current = false;
75
73
  }, []);
76
74
  useEffect(()=>{
77
75
  if (!suggestionsOpen) return;
@@ -79,6 +77,7 @@ export default function ShipQLEditorInner({ onChange, onLeafFocus, placeholder,
79
77
  if (isSelectingRef.current) return;
80
78
  const target = event.target;
81
79
  if (target && containerRef.current?.contains(target)) return;
80
+ if (target?.closest?.('[data-shipql-suggestions]')) return;
82
81
  handleDismissSuggestions();
83
82
  const activeElement = document.activeElement;
84
83
  if (activeElement && containerRef.current?.contains(activeElement)) {
@@ -1,7 +1,7 @@
1
1
  import type { AstNode } from '@shipfox/shipql-parser';
2
- import type { LeafAstNode } from './lexical/shipql-leaf-node';
3
- import type { FacetDef, FormatLeafDisplay } from './suggestions/types';
4
- export type { FacetDef, FacetMetadata, FormatLeafDisplay, RangeFacetConfig, } from './suggestions/types';
2
+ import type { LeafAstNode } from './lexical/shipql-leaf-node.js';
3
+ import type { FacetDef, FormatLeafDisplay } from './suggestions/types.js';
4
+ export type { FacetDef, FacetMetadata, FormatLeafDisplay, RangeFacetConfig, } from './suggestions/types.js';
5
5
  export type LeafChangePayload = {
6
6
  partialValue: string;
7
7
  ast: AstNode | null;
@@ -1,6 +1,6 @@
1
1
  import { type AstNode } from '@shipfox/shipql-parser';
2
- import type { LeafAstNode } from '../lexical/shipql-leaf-node';
3
- import type { FacetDef, FacetGroupInfo, RangeFacetConfig, SuggestionItem } from './types';
2
+ import type { LeafAstNode } from '../lexical/shipql-leaf-node.js';
3
+ import type { FacetDef, FacetGroupInfo, RangeFacetConfig, SuggestionItem } from './types.js';
4
4
  export declare function tryParse(text: string): AstNode | null;
5
5
  export declare function normalizeFacets(facets: FacetDef[]): string[];
6
6
  export declare function getFacetConfig(facets: FacetDef[], id: string): RangeFacetConfig | undefined;
@@ -1,4 +1,4 @@
1
- import type { RangeFacetConfig } from './types';
1
+ import type { RangeFacetConfig } from './types.js';
2
2
  export interface ShipQLRangeFacetPanelProps {
3
3
  facetName: string;
4
4
  config: RangeFacetConfig;
@@ -1,4 +1,4 @@
1
- import type { SuggestionItem } from './types';
1
+ import type { SuggestionItem } from './types.js';
2
2
  interface ShipQLSuggestionItemProps {
3
3
  item: SuggestionItem;
4
4
  isHighlighted: boolean;
@@ -1,5 +1,5 @@
1
- import { type SyntaxHintMode } from './shipql-suggestions-footer';
2
- import type { SuggestionItem } from './types';
1
+ import { type SyntaxHintMode } from './shipql-suggestions-footer.js';
2
+ import type { SuggestionItem } from './types.js';
3
3
  interface ShipQLSuggestionsDropdownProps {
4
4
  items: SuggestionItem[];
5
5
  selectedIndex: number;
@@ -135,6 +135,7 @@ export function ShipQLSuggestionsDropdown({ items, selectedIndex, isSelectingRef
135
135
  ]
136
136
  });
137
137
  return /*#__PURE__*/ _jsx(PopoverContent, {
138
+ "data-shipql-suggestions": true,
138
139
  align: "start",
139
140
  sideOffset: 4,
140
141
  className: "p-0 w-(--radix-popover-trigger-width) rounded-8",
@@ -144,6 +145,11 @@ export function ShipQLSuggestionsDropdown({ items, selectedIndex, isSelectingRef
144
145
  e.preventDefault();
145
146
  return;
146
147
  }
148
+ const target = e.detail?.originalEvent?.target;
149
+ if (target instanceof Element && target.closest('[data-shipql-editor]')) {
150
+ e.preventDefault();
151
+ return;
152
+ }
147
153
  onClose();
148
154
  },
149
155
  onPointerDownOutside: (e)=>{
@@ -151,6 +157,13 @@ export function ShipQLSuggestionsDropdown({ items, selectedIndex, isSelectingRef
151
157
  e.preventDefault();
152
158
  return;
153
159
  }
160
+ // Clicks inside the editor are handled by Lexical's focus/blur
161
+ // commands — only dismiss for clicks truly outside the editor.
162
+ const target = e.detail?.originalEvent?.target;
163
+ if (target instanceof Element && target.closest('[data-shipql-editor]')) {
164
+ e.preventDefault();
165
+ return;
166
+ }
154
167
  onClose();
155
168
  },
156
169
  children: popoverContent
@@ -1,6 +1,6 @@
1
1
  import type { AstNode } from '@shipfox/shipql-parser';
2
- import type { LeafAstNode } from '../lexical/shipql-leaf-node';
3
- import type { FacetDef, SuggestionItem } from './types';
2
+ import type { LeafAstNode } from '../lexical/shipql-leaf-node.js';
3
+ import type { FacetDef, SuggestionItem } from './types.js';
4
4
  interface ShipQLSuggestionsPluginProps {
5
5
  facets: FacetDef[];
6
6
  currentFacet: string | null;
@@ -1,2 +1,2 @@
1
- export * from './skeleton';
1
+ export * from './skeleton.js';
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1,2 +1,2 @@
1
- export * from './slider';
1
+ export * from './slider.js';
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1,2 +1,2 @@
1
- export * from './switch';
1
+ export * from './switch.js';
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1,6 +1,6 @@
1
1
  export type { ColumnDef } from '@tanstack/react-table';
2
- export * from './data-table';
3
- export * from './table';
4
- export * from './table-column-header';
5
- export * from './table-pagination';
2
+ export * from './data-table.js';
3
+ export * from './table.js';
4
+ export * from './table-column-header.js';
5
+ export * from './table-pagination.js';
6
6
  //# sourceMappingURL=index.d.ts.map
@@ -2,7 +2,7 @@
2
2
  * Column definitions for Table stories
3
3
  */
4
4
  import type { ColumnDef } from '@tanstack/react-table';
5
- import type { JobData, SearchJobData, User } from './table.stories.data';
5
+ import type { JobData, SearchJobData, User } from './table.stories.data.js';
6
6
  /**
7
7
  * Create column definitions for JobData
8
8
  */
@@ -1,2 +1,2 @@
1
- export * from './tabs';
1
+ export * from './tabs.js';
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1,2 +1,2 @@
1
- export * from './textarea';
1
+ export * from './textarea.js';
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1,2 +1,2 @@
1
- export * from './theme-provider';
1
+ export * from './theme-provider.js';
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1,5 +1,5 @@
1
1
  import { type ReactNode } from 'react';
2
- import { type Theme } from '../../state/theme';
2
+ import { type Theme } from '../../state/theme.js';
3
3
  type ThemeProviderProps = {
4
4
  children: ReactNode;
5
5
  defaultTheme?: Theme;
@@ -1,3 +1,3 @@
1
- export * from './toast';
2
- export * from './toast-custom';
1
+ export * from './toast.js';
2
+ export * from './toast-custom.js';
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1,2 +1,2 @@
1
- export * from './tooltip';
1
+ export * from './tooltip.js';
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1,4 +1,4 @@
1
- export * from './code';
2
- export * from './header';
3
- export * from './text';
1
+ export * from './code.js';
2
+ export * from './header.js';
3
+ export * from './text.js';
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1,7 +1,7 @@
1
- export * from './useCopyToClipboard';
2
- export * from './useMediaQuery';
3
- export * from './useResolvedTheme';
4
- export * from './useShikiHighlight';
5
- export * from './useShikiStyleInjection';
6
- export * from './useTheme';
1
+ export * from './useCopyToClipboard.js';
2
+ export * from './useMediaQuery.js';
3
+ export * from './useResolvedTheme.js';
4
+ export * from './useShikiHighlight.js';
5
+ export * from './useShikiStyleInjection.js';
6
+ export * from './useTheme.js';
7
7
  //# sourceMappingURL=index.d.ts.map
@@ -1,2 +1,2 @@
1
- export declare const useTheme: () => import("../state/theme").ThemeProviderState;
1
+ export declare const useTheme: () => import("../state/theme.js").ThemeProviderState;
2
2
  //# sourceMappingURL=useTheme.d.ts.map
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  export { ShipfoxLoader } from 'shipfox-loader-react';
2
- export * from './components';
3
- export * from './hooks';
4
- export type { Theme, ThemeProviderState } from './state/theme';
5
- export * from './utils';
2
+ export * from './components/index.js';
3
+ export * from './hooks/index.js';
4
+ export type { Theme, ThemeProviderState } from './state/theme.js';
5
+ export * from './utils/index.js';
6
6
  //# sourceMappingURL=index.d.ts.map
@@ -1,6 +1,6 @@
1
- export * from './bytes';
2
- export * from './chart';
3
- export * from './date';
4
- export * from './duration';
5
- export * from './number';
1
+ export * from './bytes.js';
2
+ export * from './chart.js';
3
+ export * from './date.js';
4
+ export * from './duration.js';
5
+ export * from './number.js';
6
6
  //# sourceMappingURL=index.d.ts.map
@@ -1,7 +1,7 @@
1
- export * from './avatar';
2
- export * from './clipboard';
3
- export * from './cn';
4
- export * from './date';
5
- export * from './debounce';
6
- export * from './format';
1
+ export * from './avatar.js';
2
+ export * from './clipboard.js';
3
+ export * from './cn.js';
4
+ export * from './date.js';
5
+ export * from './debounce.js';
6
+ export * from './format/index.js';
7
7
  //# sourceMappingURL=index.d.ts.map
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@shipfox/react-ui",
3
3
  "license": "MIT",
4
- "version": "0.33.0",
4
+ "version": "0.33.1",
5
5
  "private": false,
6
6
  "main": "dist/index.js",
7
7
  "types": "dist/index.d.ts",
@@ -101,11 +101,11 @@
101
101
  "vite": "^8.0.3",
102
102
  "vitest": "^4.0.8",
103
103
  "zod": "^4.1.12",
104
+ "@shipfox/biome": "1.8.0",
105
+ "@shipfox/swc": "1.2.5",
106
+ "@shipfox/typescript": "1.1.4",
104
107
  "@shipfox/ts-config": "1.3.5",
105
108
  "@shipfox/vite": "1.2.2",
106
- "@shipfox/biome": "1.8.0",
107
- "@shipfox/swc": "1.2.3",
108
- "@shipfox/typescript": "1.1.2",
109
109
  "@shipfox/vitest": "1.2.0"
110
110
  },
111
111
  "scripts": {