@synerise/ds-search 1.5.32 → 1.5.34
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 +8 -0
- package/CLAUDE.md +280 -0
- package/package.json +10 -9
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,14 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [1.5.34](https://github.com/Synerise/synerise-design/compare/@synerise/ds-search@1.5.33...@synerise/ds-search@1.5.34) (2026-07-23)
|
|
7
|
+
|
|
8
|
+
**Note:** Version bump only for package @synerise/ds-search
|
|
9
|
+
|
|
10
|
+
## [1.5.33](https://github.com/Synerise/synerise-design/compare/@synerise/ds-search@1.5.32...@synerise/ds-search@1.5.33) (2026-07-16)
|
|
11
|
+
|
|
12
|
+
**Note:** Version bump only for package @synerise/ds-search
|
|
13
|
+
|
|
6
14
|
## [1.5.32](https://github.com/Synerise/synerise-design/compare/@synerise/ds-search@1.5.31...@synerise/ds-search@1.5.32) (2026-07-09)
|
|
7
15
|
|
|
8
16
|
**Note:** Version bump only for package @synerise/ds-search
|
package/CLAUDE.md
ADDED
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
# Search (`@synerise/ds-search`)
|
|
2
|
+
|
|
3
|
+
> Expandable search input with a virtualized dropdown that supports recent items, filterable parameters (facets), and contextual suggestions.
|
|
4
|
+
|
|
5
|
+
## Package structure
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
src/
|
|
9
|
+
Search.tsx — main component (generic over T, U, S)
|
|
10
|
+
Search.types.tsx — SearchProps, SearchLookupConfig, DataSetProps, AnyObject, SelectResultDataKeys
|
|
11
|
+
Search.styles.tsx — styled-components for wrapper, dropdown, input, filter label, clear button
|
|
12
|
+
const.ts — numeric constants (offsets, animation durations)
|
|
13
|
+
index.ts — public exports
|
|
14
|
+
modules.d.ts —less module declaration
|
|
15
|
+
style/
|
|
16
|
+
index.less — component base styles
|
|
17
|
+
input.mixin.less — input mixin
|
|
18
|
+
Elements/
|
|
19
|
+
index.ts — re-exports sub-components
|
|
20
|
+
SearchInput/
|
|
21
|
+
SearchInput.tsx — collapsible input with filter label, clear button, search button
|
|
22
|
+
SearchInput.types.tsx — SearchInputProps
|
|
23
|
+
SearchButton/
|
|
24
|
+
SearchButton.tsx — ghost icon button (SearchM icon) that toggles the input
|
|
25
|
+
SearchButton.types.ts — SearchButtonProps
|
|
26
|
+
SearchHeader/
|
|
27
|
+
SearchHeader.tsx — section header row with optional info-icon tooltip
|
|
28
|
+
SearchHeader.types.ts — SearchHeaderProps
|
|
29
|
+
SearchItems/
|
|
30
|
+
SearchItems.tsx — react-window FixedSizeList renderer, exported as SearchItems / SearchItemList
|
|
31
|
+
SearchItems.types.ts — SearchItemListProps
|
|
32
|
+
SearchRenderer/
|
|
33
|
+
SearchRenderer.tsx — composes SearchHeader + SearchItems; internal to Search, not re-exported
|
|
34
|
+
SearchRenderer.types.ts — SearchRendererProps
|
|
35
|
+
utils/
|
|
36
|
+
searchUtils.tsx — getAllElementsFiltered, hasSomeElementFiltered, hasSomeElement, getParametersScrollTop
|
|
37
|
+
__specs__/
|
|
38
|
+
Search.spec.tsx
|
|
39
|
+
SearchInput.spec.tsx
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Public exports
|
|
43
|
+
|
|
44
|
+
```ts
|
|
45
|
+
// default
|
|
46
|
+
export { default } from './Search'; // Search<T, U, S>
|
|
47
|
+
|
|
48
|
+
// sub-components
|
|
49
|
+
export { SearchInput } // from Elements
|
|
50
|
+
export { SearchHeader } // from Elements
|
|
51
|
+
export { SearchItems, SearchItemList, renderSearchList } // from Elements (SearchItems and SearchItemList are the same default export)
|
|
52
|
+
export { SearchButton } // from Elements
|
|
53
|
+
|
|
54
|
+
// types
|
|
55
|
+
export type { SearchProps, SearchLookupConfig } // from Search.types
|
|
56
|
+
export type { SearchInputProps } // from Elements/SearchInput/SearchInput.types
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### `Search<T, U, S>`
|
|
60
|
+
|
|
61
|
+
Generic component. `T` = recent item shape, `U` = parameter item shape, `S` = suggestion item shape.
|
|
62
|
+
|
|
63
|
+
| Prop | Type | Default | Description |
|
|
64
|
+
|------|------|---------|-------------|
|
|
65
|
+
| `clearTooltip` | `string` | — | Tooltip text on the clear (×) button |
|
|
66
|
+
| `divider` | `ReactNode` | — | Node rendered between recent and parameters sections |
|
|
67
|
+
| `dropdownMaxHeight` | `number` | — | Max height (px) of the dropdown content area |
|
|
68
|
+
| `filterLookupKey` | `string` | — | Key on a parameter item used as display label in the input; when set, clicking the parameter also populates the text input with that key's value and calls `onParameterValueChange` with the item's `filterLookupKey` value instead of the text key |
|
|
69
|
+
| `inputProps` | `Partial<InputProps>` (antd) | — | Extra props forwarded to the underlying antd `Input` |
|
|
70
|
+
| `onClear` | `() => void` | — | Called when clear button is clicked; caller must reset `value` and `parameterValue` |
|
|
71
|
+
| `onParameterValueChange` | `(parameterValue: string, parameter: U \| null) => void` | — | Called when a parameter item is selected or when Backspace clears the current parameter |
|
|
72
|
+
| `onValueChange` | `(value: string) => void` | — | Called on every input change and when an item is selected |
|
|
73
|
+
| `parameters` | `U[]` | — | Parameter (filter/facet) items for the dropdown |
|
|
74
|
+
| `parametersDisplayProps` | `DataSetProps` | — | Render config for the parameters section |
|
|
75
|
+
| `parameterValue` | `string` | — | Currently active parameter value; when non-empty, switches dropdown to suggestions mode |
|
|
76
|
+
| `placeholder` | `string` | — | Input placeholder text |
|
|
77
|
+
| `recent` | `T[]` | — | Recent-search items for the dropdown |
|
|
78
|
+
| `recentDisplayProps` | `DataSetProps` | — | Render config for the recent section |
|
|
79
|
+
| `searchWidth` | `number` | — | Width (px) of the expanded input; preferred over `width` |
|
|
80
|
+
| `dropdownWidth` | `number` | — | Width (px) of the dropdown; defaults to match input width |
|
|
81
|
+
| `width` | `number` | — | **Deprecated** — use `searchWidth` instead |
|
|
82
|
+
| `suggestions` | `S[] \| null` | `null` | Suggestion items shown after a parameter is chosen |
|
|
83
|
+
| `suggestionsDisplayProps` | `DataSetProps \| null` | — | Render config for the suggestions section; required for suggestions to display |
|
|
84
|
+
| `textLookupConfig` | `SearchLookupConfig<T,U,S>` | — | Maps each dataset to the key used for text matching and display |
|
|
85
|
+
| `value` | `string` | — | Controlled input value |
|
|
86
|
+
| `hideLabel` | `boolean` | — | When `true`, clears the active filter label from the input |
|
|
87
|
+
| `disableInput` | `boolean` | — | Disables the text input while keeping the button clickable |
|
|
88
|
+
| `alwaysExpanded` | `boolean` | — | Keeps the input expanded at all times; disables toggle behaviour |
|
|
89
|
+
| `searchTooltipProps` | `TooltipProps` | — | Props forwarded to the `@synerise/ds-tooltip` wrapping the input |
|
|
90
|
+
| `style` | `React.CSSProperties` | — | Inline style on the outermost wrapper |
|
|
91
|
+
|
|
92
|
+
#### `SearchLookupConfig<T, U, S>`
|
|
93
|
+
|
|
94
|
+
```ts
|
|
95
|
+
{
|
|
96
|
+
parameters: keyof U;
|
|
97
|
+
recent: keyof T;
|
|
98
|
+
suggestions: keyof S;
|
|
99
|
+
}
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
#### `DataSetProps`
|
|
103
|
+
|
|
104
|
+
| Prop | Type | Default | Description |
|
|
105
|
+
|------|------|---------|-------------|
|
|
106
|
+
| `itemRender` | `(item: any) => JSX.Element` | — | Renders a single row |
|
|
107
|
+
| `rowHeight` | `number` | — | Height of each row in px (used by react-window) |
|
|
108
|
+
| `title` | `string` | — | Section header text |
|
|
109
|
+
| `tooltip` | `string` | — | Tooltip on the info icon next to the title |
|
|
110
|
+
| `visibleRows` | `number` | — | Caps the visible rows; list scrolls beyond this |
|
|
111
|
+
| `listProps` | `Partial<ListProps>` (react-window) | — | Extra props passed to the `FixedSizeList` |
|
|
112
|
+
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
### `SearchInput`
|
|
116
|
+
|
|
117
|
+
Standalone collapsible search input. Can be used independently of the full `Search` component.
|
|
118
|
+
|
|
119
|
+
| Prop | Type | Default | Description |
|
|
120
|
+
|------|------|---------|-------------|
|
|
121
|
+
| `value` | `string` | — | Controlled value (required) |
|
|
122
|
+
| `onChange` | `(value: string) => void` | — | Called on input change (required) |
|
|
123
|
+
| `onClear` | `() => void` | — | Called when clear button is clicked (required) |
|
|
124
|
+
| `alwaysExpanded` | `boolean` | — | Keeps input permanently open |
|
|
125
|
+
| `alwaysHighlight` | `boolean` | — | Input always shown with blue border when open |
|
|
126
|
+
| `clearTooltip` | `ReactNode` | — | Tooltip text/node on the clear button |
|
|
127
|
+
| `closeOnClickOutside` | `boolean` | — | Collapses input when clicking outside |
|
|
128
|
+
| `disabled` | `boolean` | — | Disables the entire component including the button |
|
|
129
|
+
| `disableInput` | `boolean` | — | Disables only the text input; button remains active |
|
|
130
|
+
| `filterLabel` | `{ icon?: ReactNode; [key: string]: any } \| null` | — | Object whose key matches `textLookupKey`/`filterLookupKey`; rendered as a chip prefix inside the input |
|
|
131
|
+
| `filterLookupKey` | `string` | — | Key on `filterLabel` to display as chip text; falls back to `textLookupKey` |
|
|
132
|
+
| `focusTrigger` | `boolean` | — | Toggle this boolean to imperatively focus the input |
|
|
133
|
+
| `inputProps` | `Partial<InputProps>` | — | Extra props forwarded to antd `Input` |
|
|
134
|
+
| `moveCursorToEnd` | `boolean` | — | Moves caret to end of value when toggled |
|
|
135
|
+
| `onButtonClick` | `() => void` | — | Called when the search icon button is clicked |
|
|
136
|
+
| `onClick` | `() => void` | — | Called when the input area is clicked |
|
|
137
|
+
| `onKeyDown` | `(e: KeyboardEvent<HTMLInputElement>) => void` | — | Key-down handler on the input |
|
|
138
|
+
| `onToggle` | `(isOpen: boolean) => void` | — | Called when the expanded state changes |
|
|
139
|
+
| `placeholder` | `string` | — | Input placeholder |
|
|
140
|
+
| `searchTooltipProps` | `Partial<TooltipProps>` | `{}` | Tooltip wrapping the input |
|
|
141
|
+
| `textLookupKey` | `string` | — | Key on `filterLabel` used when `filterLookupKey` is absent |
|
|
142
|
+
| `toggleTrigger` | `boolean` | — | Toggle this boolean to imperatively expand/collapse the input |
|
|
143
|
+
|
|
144
|
+
---
|
|
145
|
+
|
|
146
|
+
### `SearchItems` / `SearchItemList`
|
|
147
|
+
|
|
148
|
+
Both names are the same default export from `SearchItems.tsx`.
|
|
149
|
+
|
|
150
|
+
| Prop | Type | Default | Description |
|
|
151
|
+
|------|------|---------|-------------|
|
|
152
|
+
| `data` | `T[] \| undefined` | — | Items to render |
|
|
153
|
+
| `itemRender` | `(item: T) => JSX.Element` | — | Row renderer |
|
|
154
|
+
| `rowHeight` | `number` | — | Row height in px |
|
|
155
|
+
| `width` | `number \| string` | — | List width |
|
|
156
|
+
| `height` | `number` | — | Max height in px; list scrolls beyond this |
|
|
157
|
+
| `highlight` | `string` | — | Text to highlight in rendered rows |
|
|
158
|
+
| `onItemClick` | `(e: T) => void` | — | Item click callback |
|
|
159
|
+
| `listProps` | `Partial<ListProps> & { scrollTop?: number }` | — | Extra react-window props; `scrollTop` is synced via `listRef.scrollTo` |
|
|
160
|
+
| `visibleRows` | `number` | — | Caps height to `visibleRows * rowHeight` |
|
|
161
|
+
| `renderInMenu` | `boolean` | `true` | Wraps list in `ds-menu`; **deprecated** — set to `false` and avoid `Menu.Item` in `itemRender` |
|
|
162
|
+
|
|
163
|
+
#### `renderSearchList`
|
|
164
|
+
|
|
165
|
+
```ts
|
|
166
|
+
function renderSearchList<V>(props: SearchItemListProps<V>, children?: ReactNode): ReactElement
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
Convenience wrapper that returns `<SearchItems {..props}>{children}</SearchItems>`.
|
|
170
|
+
|
|
171
|
+
---
|
|
172
|
+
|
|
173
|
+
### `SearchHeader`
|
|
174
|
+
|
|
175
|
+
| Prop | Type | Default | Description |
|
|
176
|
+
|------|------|---------|-------------|
|
|
177
|
+
| `headerText` | `string` | — | Section label (required) |
|
|
178
|
+
| `tooltip` | `string` | — | Info-icon tooltip text |
|
|
179
|
+
|
|
180
|
+
---
|
|
181
|
+
|
|
182
|
+
### `SearchButton`
|
|
183
|
+
|
|
184
|
+
Internal button used by `SearchInput`. Exported for advanced composition.
|
|
185
|
+
|
|
186
|
+
| Prop | Type | Default | Description |
|
|
187
|
+
|------|------|---------|-------------|
|
|
188
|
+
| `inputOpen` | `boolean` | — | Whether the input is currently expanded |
|
|
189
|
+
| `hidden` | `boolean` | — | Hides the button (value or filterLabel present) |
|
|
190
|
+
| `onClick` | `() => void` | — | Click handler |
|
|
191
|
+
| `clickable` | `boolean` | — | Enables pointer events |
|
|
192
|
+
| `disabled` | `boolean` | — | Renders the button as disabled |
|
|
193
|
+
| `inputFocused` | `boolean` | — | Changes icon fill to blue-600 when focused |
|
|
194
|
+
|
|
195
|
+
## Usage patterns
|
|
196
|
+
|
|
197
|
+
```tsx
|
|
198
|
+
import Search from '@synerise/ds-search';
|
|
199
|
+
import { SearchInput, SearchItems, SearchHeader } from '@synerise/ds-search';
|
|
200
|
+
import type { SearchProps, SearchLookupConfig, SearchInputProps } from '@synerise/ds-search';
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
Minimal controlled example:
|
|
204
|
+
|
|
205
|
+
```tsx
|
|
206
|
+
const [value, setValue] = React.useState('');
|
|
207
|
+
const [parameterValue, setParameterValue] = React.useState('');
|
|
208
|
+
const [suggestions, setSuggestions] = React.useState([]);
|
|
209
|
+
|
|
210
|
+
<Search
|
|
211
|
+
clearTooltip="Clear"
|
|
212
|
+
placeholder="Search"
|
|
213
|
+
dropdownMaxHeight={400}
|
|
214
|
+
value={value}
|
|
215
|
+
parameterValue={parameterValue}
|
|
216
|
+
parameters={[{ text: 'City', icon: <CityIcon /> }]}
|
|
217
|
+
recent={[{ text: 'Bangkok', filter: 'City' }]}
|
|
218
|
+
suggestions={suggestions}
|
|
219
|
+
textLookupConfig={{ parameters: 'text', recent: 'text', suggestions: 'text' }}
|
|
220
|
+
onValueChange={setValue}
|
|
221
|
+
onParameterValueChange={(val, param) => {
|
|
222
|
+
setParameterValue(val);
|
|
223
|
+
setSuggestions(fetchSuggestions(val));
|
|
224
|
+
}}
|
|
225
|
+
onClear={() => { setValue(''); setParameterValue(''); setSuggestions([]); }}
|
|
226
|
+
recentDisplayProps={{ title: 'Recent', rowHeight: 32, itemRender: (item) => <ListItem>{item.text}</ListItem> }}
|
|
227
|
+
parametersDisplayProps={{ title: 'Parameters', rowHeight: 32, itemRender: (item) => <ListItem>{item.text}</ListItem> }}
|
|
228
|
+
suggestionsDisplayProps={{ title: 'Suggestions', rowHeight: 32, itemRender: (item) => <ListItem>{item.text}</ListItem> }}
|
|
229
|
+
/>
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
Standalone input only:
|
|
233
|
+
|
|
234
|
+
```tsx
|
|
235
|
+
import { SearchInput } from '@synerise/ds-search';
|
|
236
|
+
|
|
237
|
+
<SearchInput
|
|
238
|
+
value={value}
|
|
239
|
+
onChange={setValue}
|
|
240
|
+
onClear={() => setValue('')}
|
|
241
|
+
clearTooltip="Clear"
|
|
242
|
+
placeholder="Search"
|
|
243
|
+
closeOnClickOutside
|
|
244
|
+
/>
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
## Styling
|
|
248
|
+
|
|
249
|
+
- `Search.styles.tsx` contains all styled-components; no CSS Modules.
|
|
250
|
+
- `SearchWrapper` receives `$width` (px) and `inputOpen` to toggle `width: 32px` vs full width.
|
|
251
|
+
- `SearchInputContent` transitions `width: 0 → 100%` over `ANIMATION_DURATION` (0.1s) using `direction: rtl` for right-to-left expansion animation.
|
|
252
|
+
- `SearchInner` applies blue border (`palette['blue-600']`) and blue background (`palette['blue-050']`) when `hasValue` or `alwaysHighlight`.
|
|
253
|
+
- `Filter` chip is capped at `MAX_FILTER_WIDTH = 120px` and uses `palette['blue-600']` color.
|
|
254
|
+
- `SearchDropdownWrapper` has `width: 0` by default; the child `.search-list-open` class makes it visible via `openDropdownAnimation` keyframe (fade in over 0.3s).
|
|
255
|
+
- Dropdown appears 40px below the input (`top: 40px` on `SearchDropdownContent`).
|
|
256
|
+
- `SCROLLBAR_HEIGHT_OFFSET = 28` is subtracted from `dropdownMaxHeight` before passing to `@synerise/ds-scrollbar`.
|
|
257
|
+
|
|
258
|
+
## Key dependencies
|
|
259
|
+
|
|
260
|
+
- `react-window` — `FixedSizeList` for virtualized dropdown rows
|
|
261
|
+
- `@synerise/ds-scrollbar` — custom scrollbar wrapping the dropdown
|
|
262
|
+
- `@synerise/ds-utils` (`focusWithArrowKeys`, `useOnClickOutside`, `usePrevious`) — keyboard navigation and outside-click handling
|
|
263
|
+
- `@synerise/ds-tooltip` — wraps the search input and provides section header tooltips
|
|
264
|
+
- `@synerise/ds-menu` — wraps items when `renderInMenu=true` (deprecated path)
|
|
265
|
+
- `@synerise/ds-list-item` (`ListContextProvider`) — wraps items when `renderInMenu=false`
|
|
266
|
+
- `antd/lib/input` — base `Input` component inside `SearchInput`
|
|
267
|
+
|
|
268
|
+
## Implementation notes
|
|
269
|
+
|
|
270
|
+
- The component is **fully controlled** — `value` and `parameterValue` must be managed by the caller. Selecting an item calls `onValueChange`/`onParameterValueChange`; the component does not update its own displayed value.
|
|
271
|
+
- **Parameter vs suggestions mode**: when `parameterValue` is non-empty, the dropdown switches to showing only `suggestions`. Recent items and parameters are hidden.
|
|
272
|
+
- **`filterLookupKey` special behaviour**: when a parameter item has a truthy value at `filterLookupKey`, clicking it immediately sets `isResultChosen = true`, populates the text input with the parameter text key value, and calls `onParameterValueChange` with the `filterLookupKey` value — effectively treating the parameter as a direct result rather than a filter.
|
|
273
|
+
- **Arrow-key navigation**: `focusWithArrowKeys` from `ds-utils` moves focus across `.ds-search-item` elements; pressing Up when at the top returns focus to the input via `setFocusInputTrigger`.
|
|
274
|
+
- **`toggleTrigger` / `focusTrigger`** on `SearchInput` are boolean flip-flops — the component reacts to a change in value (via `usePrevious`), not to the value itself.
|
|
275
|
+
- **`width` prop is deprecated** — `searchWidth` is the current prop; both set the same `mergedWidth` internal variable.
|
|
276
|
+
- **Gesture-aware outside-click collapse**: both `SearchInput` and `Search` keep the default `useOnClickOutside` events (`mousedown`/`touchstart`) so the "should I close?" decision still happens at gesture start — but the state change that triggers the CSS width animation is deferred to the matching `mouseup`/`touchend` via a document-level one-shot listener tracked in `pendingCloseCleanupRef` (cleaned up on unmount or on a repeat mousedown). Rationale: firing the collapse on `mousedown` would shift adjacent layout between mousedown and mouseup, causing the browser to miss the `click` on the neighbouring element. A `['click']`-only variant was tried and rejected because some host apps cancel/stop-propagation on click events before they reach `document`, which breaks the close entirely.
|
|
277
|
+
- **`getParametersScrollTop` takes `hasRecentTitle`**: callers must pass `hasRecentTitle: !!recentDisplayProps.title` so the function only subtracts `LIST_HEADER_HEIGHT` when the recent section actually renders a header. Without this, the parameters list scrolls 42 px out of sync when the recent section has no title.
|
|
278
|
+
- `AnyObject = Record<string, any>` is used throughout for item shapes; TypeScript generics at the `Search` level provide partial type safety but `itemRender` and internal utilities rely on `any`.
|
|
279
|
+
- Tests use **Vitest** — `package.json` `test` script runs `vitest run`; no `jest.config.js`. Specs use `vi.fn()`.
|
|
280
|
+
- The Storybook overview page lives at `packages/storybook/stories/components/Search/Search.mdx` (`<Meta title="Components/Search" />`) and covers both `Search` and `SearchInput`. Story files: `Search.stories.tsx`, `SearchInput.stories.tsx`. Each story has a `parameters.docs.source.code` snippet for the Code panel.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@synerise/ds-search",
|
|
3
|
-
"version": "1.5.
|
|
3
|
+
"version": "1.5.34",
|
|
4
4
|
"description": "Search UI Component for the Synerise Design System",
|
|
5
5
|
"license": "ISC",
|
|
6
6
|
"repository": "Synerise/synerise-design",
|
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
"files": [
|
|
18
18
|
"/dist",
|
|
19
19
|
"CHANGELOG.md",
|
|
20
|
+
"CLAUDE.md",
|
|
20
21
|
"README.md",
|
|
21
22
|
"package.json",
|
|
22
23
|
"LICENSE.md"
|
|
@@ -41,13 +42,13 @@
|
|
|
41
42
|
],
|
|
42
43
|
"types": "dist/index.d.ts",
|
|
43
44
|
"dependencies": {
|
|
44
|
-
"@synerise/ds-button": "^1.5.
|
|
45
|
-
"@synerise/ds-icon": "^1.18.
|
|
46
|
-
"@synerise/ds-list-item": "^1.6.
|
|
47
|
-
"@synerise/ds-menu": "^1.4.
|
|
48
|
-
"@synerise/ds-scrollbar": "^1.5.
|
|
49
|
-
"@synerise/ds-tooltip": "^1.5.
|
|
50
|
-
"@synerise/ds-utils": "^1.10.
|
|
45
|
+
"@synerise/ds-button": "^1.5.35",
|
|
46
|
+
"@synerise/ds-icon": "^1.18.5",
|
|
47
|
+
"@synerise/ds-list-item": "^1.6.2",
|
|
48
|
+
"@synerise/ds-menu": "^1.4.32",
|
|
49
|
+
"@synerise/ds-scrollbar": "^1.5.2",
|
|
50
|
+
"@synerise/ds-tooltip": "^1.5.4",
|
|
51
|
+
"@synerise/ds-utils": "^1.10.2",
|
|
51
52
|
"react-onclickoutside": "^6.9.0",
|
|
52
53
|
"react-window": "^1.8.11"
|
|
53
54
|
},
|
|
@@ -57,5 +58,5 @@
|
|
|
57
58
|
"styled-components": "^5.3.3",
|
|
58
59
|
"vitest": "4"
|
|
59
60
|
},
|
|
60
|
-
"gitHead": "
|
|
61
|
+
"gitHead": "d0a43cc43d8528a36f105aceea52ab470edb71d9"
|
|
61
62
|
}
|