@synerise/ds-list 1.1.41 → 1.1.43

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -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.1.43](https://github.com/Synerise/synerise-design/compare/@synerise/ds-list@1.1.42...@synerise/ds-list@1.1.43) (2026-07-24)
7
+
8
+ **Note:** Version bump only for package @synerise/ds-list
9
+
10
+ ## [1.1.42](https://github.com/Synerise/synerise-design/compare/@synerise/ds-list@1.1.41...@synerise/ds-list@1.1.42) (2026-07-23)
11
+
12
+ **Note:** Version bump only for package @synerise/ds-list
13
+
6
14
  ## [1.1.41](https://github.com/Synerise/synerise-design/compare/@synerise/ds-list@1.1.40...@synerise/ds-list@1.1.41) (2026-06-27)
7
15
 
8
16
  **Note:** Version bump only for package @synerise/ds-list
package/CLAUDE.md ADDED
@@ -0,0 +1,149 @@
1
+ # List (`@synerise/ds-list`)
2
+ > A generic **DS-native** list component (no antd), supporting nested/sectioned data sources, optional radio group wrapping, and styled sub-components for text items, item wrappers, and dividers. Reproduces antd `List`'s DOM + `.ant-list*` class hooks (`.ant-list`, `.ant-list-items`, `.ant-list-header`, `.ant-list-split`, `.ant-list-bordered`) side-by-side with `.ds-list*` hooks so existing consumer stylesheets keep working.
3
+
4
+ ## Package structure
5
+ ```
6
+ src/
7
+ List.tsx — functional component, renders flat or nested (sectioned) DS-native list
8
+ List.styles.ts — styled-components for the root/header/items(ul)/loading
9
+ List.types.ts — ListPropsType<T> type definition (hand-written, no antd)
10
+ index.ts — public entry point
11
+ modules.d.ts — CSS/Less module declarations
12
+ Elements/
13
+ index.ts — re-exports TextItem, ItemWrapper, ListDivider
14
+ Text/
15
+ Text.tsx — List.Item styled <li> with icon, actions, size, disabled, danger support
16
+ Text.styles.ts — styled-components for Text; defines ListItemType union
17
+ ItemWrapper/
18
+ ItemWrapper.tsx — generic padded wrapper div for arbitrary list row content
19
+ ItemWrapper.styles.ts — styled-components for ItemWrapper
20
+ Divider/
21
+ Divider.tsx — thin wrapper around @synerise/ds-divider with horizontal padding
22
+ Divider.styles.ts — styled-components for Divider
23
+ __spec__/
24
+ List.spec.tsx — Vitest tests
25
+ ```
26
+
27
+ ## Public exports
28
+
29
+ ```ts
30
+ export { default } from './List'; // List functional component (default)
31
+ export type { ListPropsType } from './List.types';
32
+ export type { TextProps } from './Elements/Text/Text';
33
+ ```
34
+
35
+ ### Static sub-components on `List`
36
+ | Name | Component | Description |
37
+ |------|-----------|-------------|
38
+ | `List.Item` | `TextItem` | Styled `<li>` for text-based rows |
39
+ | `List.ItemWrapper` | `ItemWrapper` | Padded `<div>` wrapper for arbitrary row content (e.g. checkboxes, switches) |
40
+ | `List.Divider` | `ListDivider` | Horizontal rule between sections |
41
+
42
+ ---
43
+
44
+ ### `List<T>` (default export)
45
+
46
+ Hand-written props (`ListPropsType<T>`, no antd). Core props:
47
+
48
+ | Prop | Type | Default | Description |
49
+ |------|------|---------|-------------|
50
+ | `dataSource` | `T[] \| T[][]` | — | Flat array OR nested array of arrays. A nested array renders multiple DS-native list sections separated by `ListDivider`. Only the first section renders the `header`. |
51
+ | `radio` | `boolean` | `undefined` | Wraps the entire rendered list in `Radio.Group` |
52
+ | `options` | `RadioGroupProps` | `undefined` | Props forwarded to the `Radio.Group` wrapper; only used when `radio` is `true` |
53
+ | `dashed` | `boolean` | `undefined` | Controls the dashed style of the auto-rendered `ListDivider` between sections. Note: `ListDivider` defaults `dashed` to `true` when not supplied |
54
+
55
+ Supported antd-`List`-parity props: `bordered`, `header`, `renderItem`, `split`, `loading` (DS `Loader`), `loadMore`, `rowKey`, `itemLayout`, `size`, `className`, `style`, `children`. **Dropped in the de-antd migration (0 real consumer usage):** `grid`, `pagination`, and `locale`/`emptyText` (the default "No data" empty state was removed — consumers render their own) — reintroduce natively if a need appears. `List.Item.Meta` is not implemented (unused).
56
+
57
+ ---
58
+
59
+ ### `List.Item` / `TextItem`
60
+
61
+ Exported type: `TextProps`
62
+
63
+ | Prop | Type | Default | Description |
64
+ |------|------|---------|-------------|
65
+ | `disabled` | `boolean` | `undefined` | Reduces opacity to 0.4, sets `cursor: not-allowed`, removes tabIndex |
66
+ | `icon` | `JSX.Element` | `undefined` | Rendered in `IconWrapper` before content; adjusts `ContentWrapper` left padding |
67
+ | `danger` | `boolean` | `undefined` | Colors text and icon `red-600`; hover background becomes `red-050` |
68
+ | `actions` | `ReactNode` | `undefined` | Rendered at the end of the row in a flex-1 container |
69
+ | `onSelect` | `(e?: MouseEvent \| KeyboardEvent) => void` | `undefined` | Called on click and on `Space` keyup |
70
+ | `size` | `'small' \| 'medium'` | `'small'` | `small`: padding `5px 12px 4px 7px`; `medium`: padding `12px` (left `12px` with icon, `16px` without) |
71
+ | `..htmlAttributes` | `HTMLLIElement attrs` | — | Spread onto the `<li>` element via `WithHTMLAttributes` |
72
+
73
+ ---
74
+
75
+ ### `List.Divider` / `ListDivider`
76
+
77
+ | Prop | Type | Default | Description |
78
+ |------|------|---------|-------------|
79
+ | `dashed` | `boolean` | `true` | Passed to `@synerise/ds-divider`. The divider is always rendered with `marginTop={8}` and `marginBottom={8}`. |
80
+
81
+ ---
82
+
83
+ ### `List.ItemWrapper` / `ItemWrapper`
84
+
85
+ | Prop | Type | Default | Description |
86
+ |------|------|---------|-------------|
87
+ | `children` | `ReactNode` | `undefined` | Wrapped in a `div` with `padding: 8px 12px` |
88
+
89
+ ---
90
+
91
+ ## Usage patterns
92
+
93
+ ```tsx
94
+ import List from '@synerise/ds-list';
95
+
96
+ // Flat single-section list
97
+ <List
98
+ header="Folders"
99
+ dataSource={[{ text: 'Item 1' }]}
100
+ renderItem={(item) => (
101
+ <List.Item size="medium" icon={<Icon component={<FileM />} />} onSelect={() => {}}>
102
+ {item.text}
103
+ </List.Item>
104
+ )}
105
+ />
106
+
107
+ // Nested (multi-section) list — sections are separated by a ListDivider
108
+ <List
109
+ header="Sections"
110
+ dataSource={[[{ text: 'A' }], [{ text: 'B' }]]}
111
+ dashed={false}
112
+ renderItem={(item) => <List.Item>{item.text}</List.Item>}
113
+ />
114
+
115
+ // With radio group
116
+ <List
117
+ dataSource={[[{ value: 'a', label: 'Option A' }]]}
118
+ radio
119
+ options={{ defaultValue: 'a' }}
120
+ renderItem={(item) => (
121
+ <List.ItemWrapper>
122
+ <Radio value={item.value}>{item.label}</Radio>
123
+ </List.ItemWrapper>
124
+ )}
125
+ />
126
+
127
+ // Standalone divider (e.g. between two separate List instances)
128
+ <List.Divider />
129
+ <List.Divider dashed={false} />
130
+ ```
131
+
132
+ ## Implementation notes
133
+
134
+ - `List` is a **functional component** (function declaration with statics attached). Items are keyed by `rowKey` (or the item index) — no `uuid`.
135
+ - **Nested detection:** `isNestedArray` (also a named export from `./List`) checks `Array.isArray(array[0])`. An array of arrays renders as multiple DS-native list sections separated by `ListDivider`; only the first section renders the `header`.
136
+ - **`renderItem` contract preserved:** it receives the flattened per-item value + index and may return any node (typically `List.Item`). When no `renderItem` is given, `children` render instead. There is no built-in empty state — when there are no items and no children, nothing is rendered (consumers supply their own).
137
+ - **`footer` is omitted** from `ListPropsType` — it cannot be passed to `List`.
138
+ - `List.Item` spreads all extra props onto the underlying `<li>` via `WithHTMLAttributes<HTMLLIElement, ..>`. Items sit directly under `<ul class="ant-list-items">`, so `.ant-list-items > li` selectors keep working.
139
+ - The `ListDivider` wrapping `div` has `padding: 0 20px` to inset the rule; the `ItemWrapper` `div` has `padding: 8px 12px`.
140
+ - Tests use **Vitest** (`pnpm --filter @synerise/ds-list test`).
141
+
142
+ ## Key dependencies
143
+
144
+ | Package | Role |
145
+ |---------|------|
146
+ | `@synerise/ds-radio` | `Radio.Group` wrapping when `radio` is `true`; `RadioGroupProps` type |
147
+ | `@synerise/ds-divider` | Underlying divider in `ListDivider` |
148
+ | `@synerise/ds-loader` | Loading indicator for the `loading` prop |
149
+ | `@synerise/ds-utils` | `WithHTMLAttributes` utility type |
package/README.md CHANGED
@@ -11,6 +11,11 @@ List UI Component
11
11
 
12
12
  ## API
13
13
 
14
+ > **Note:** As of the antd-removal migration, `@synerise/ds-list` is DS-native. The `grid`,
15
+ > `pagination`, and `locale` props are no longer supported (they had no consumer usage) — the
16
+ > default "No data" empty state was removed, so consumers now render their own empty state.
17
+ > `List.Item.Meta` is not implemented. All other props below are preserved.
18
+
14
19
  ### List
15
20
 
16
21
  | Property | Description | Type | Default |
@@ -18,14 +23,11 @@ List UI Component
18
23
  | bordered | Toggles rendering of the border around the list | boolean | `false` |
19
24
  | dataSource | DataSource array or array of arrays for list | `T[] \| T[][]` | - |
20
25
  | dashed | Define type of divider line | boolean | `true` |
21
- | grid | The grid type of list. You can set grid to something like {gutter: 16, column: 4} | object | - |
22
26
  | header | List header renderer | string | - |
23
27
  | itemLayout | The layout of list, default is horizontal, If a vertical list is desired, set the itemLayout property to vertical | string | - |
24
28
  | loading | Shows a loading indicator while the contents of the list are being fetched | boolean / object | `false` |
25
29
  | loadMore | Shows a load more content | string / React.ReactNode | - |
26
- | locale | i18n text including empty text | object | emptyText: 'No Data' |
27
30
  | options | Options for radio group, if radio prop is provided | RadioGroupProps | - |
28
- | pagination | Pagination config, hide it by setting it to`false` | boolean | object |
29
31
  | split | Toggles rendering of the split under the list item | boolean | `true` |
30
32
  | renderItem | Customize list item when using dataSource | item => ReactNode | - |
31
33
  | rowKey | Item's unique key, could be a string or function that returns a string | string / (record) = > string | key |
package/dist/List.d.ts CHANGED
@@ -1,13 +1,12 @@
1
- import { default as React } from 'react';
2
- import { ItemWrapper, ListDivider, TextItem } from './Elements';
1
+ import { default as React, ReactElement } from 'react';
3
2
  import { ListPropsType } from './List.types';
4
3
  export declare const isNestedArray: <V>(array: V[] | V[][]) => boolean;
5
- declare class List<T> extends React.PureComponent<ListPropsType<T>> {
6
- static ItemWrapper: typeof ItemWrapper;
7
- static Item: typeof TextItem;
8
- static Divider: typeof ListDivider;
9
- private uuidKey;
10
- constructor(props: ListPropsType<T>);
11
- render(): React.ReactNode;
4
+ declare function List<T>({ dataSource, radio, options, dashed, ...rest }: ListPropsType<T>): ReactElement;
5
+ declare namespace List {
6
+ var Item: ({ disabled, icon, onSelect, danger, actions, children, size, ...htmlAttributes }: import(".").TextProps) => React.JSX.Element;
7
+ var ItemWrapper: ({ children }: {
8
+ children?: React.ReactNode;
9
+ }) => React.JSX.Element;
10
+ var Divider: React.FC<import("./Elements/Divider/Divider").DividerProps>;
12
11
  }
13
12
  export default List;
package/dist/List.js CHANGED
@@ -1,58 +1,75 @@
1
1
  import { jsxs, jsx, Fragment } from "react/jsx-runtime";
2
- import { List as List$1 } from "antd";
3
2
  import React from "react";
4
- import { v4 } from "uuid";
3
+ import Loader from "@synerise/ds-loader";
5
4
  import Radio from "@synerise/ds-radio";
6
5
  import Text from "./Elements/Text/Text.js";
7
6
  import ItemWrapper from "./Elements/ItemWrapper/ItemWrapper.js";
8
7
  import ListDivider from "./Elements/Divider/Divider.js";
9
- import "./style/index.css";
10
- const RadioGroupWrapper = ({
11
- children,
12
- options
13
- }) => /* @__PURE__ */ jsx(Radio.Group, { ...options, children });
8
+ import { ListRoot, ListHeader, ListLoading, ListItems } from "./List.styles.js";
14
9
  const isNestedArray = (array) => {
15
- return !!array.length && array[0] instanceof Array;
10
+ return !!array.length && Array.isArray(array[0]);
16
11
  };
17
- const _List = class _List extends React.PureComponent {
18
- constructor(props) {
19
- super(props);
20
- this.uuidKey = v4();
21
- }
22
- render() {
23
- const {
24
- dataSource,
25
- radio,
26
- options,
27
- dashed,
28
- ...rest
29
- } = this.props;
30
- let ReadyList;
31
- if (isNestedArray(dataSource)) {
32
- ReadyList = !!dataSource && // @ts-expect-error type mismatch
33
- dataSource.map((singleDataSource, index) => {
34
- const isLastItem = dataSource.length === index + 1;
35
- if (index === 0) {
36
- return /* @__PURE__ */ jsxs(React.Fragment, { children: [
37
- /* @__PURE__ */ jsx(List$1, { ...rest, dataSource: singleDataSource }),
38
- !isLastItem && /* @__PURE__ */ jsx(ListDivider, { dashed: !!dashed, "data-testid": "divider" })
39
- ] }, v4());
40
- }
41
- return /* @__PURE__ */ jsxs(React.Fragment, { children: [
42
- /* @__PURE__ */ jsx(List$1, { ...rest, header: null, dataSource: singleDataSource }),
43
- !isLastItem && /* @__PURE__ */ jsx(ListDivider, { dashed: !!dashed, "data-testid": "divider" })
44
- ] }, v4());
45
- });
46
- } else {
47
- ReadyList = /* @__PURE__ */ jsx(React.Fragment, { children: /* @__PURE__ */ jsx(List$1, { ...rest, dataSource }) }, this.uuidKey || v4());
12
+ const buildRootClassName = (props) => ["ant-list", "ds-list", props.size === "small" && "ant-list-sm", props.size === "large" && "ant-list-lg", props.split !== false && "ant-list-split", props.bordered && "ant-list-bordered", props.loading && "ant-list-loading", props.itemLayout && `ant-list-${props.itemLayout}`, props.className].filter(Boolean).join(" ");
13
+ const SingleList = ({
14
+ items,
15
+ renderItem,
16
+ header,
17
+ bordered,
18
+ split,
19
+ loading,
20
+ size,
21
+ itemLayout,
22
+ loadMore,
23
+ rowKey,
24
+ className,
25
+ style,
26
+ children,
27
+ ...htmlAttributes
28
+ }) => {
29
+ const resolveKey = (item, index) => {
30
+ if (typeof rowKey === "function") {
31
+ return rowKey(item);
32
+ }
33
+ if (rowKey && item && typeof item === "object") {
34
+ const value = item[rowKey];
35
+ if (typeof value === "string" || typeof value === "number") {
36
+ return value;
37
+ }
48
38
  }
49
- return /* @__PURE__ */ jsx(Fragment, { children: radio ? /* @__PURE__ */ jsx(RadioGroupWrapper, { options, children: ReadyList }) : ReadyList });
50
- }
39
+ return index;
40
+ };
41
+ const hasItems = Boolean(renderItem) && items.length > 0;
42
+ return /* @__PURE__ */ jsxs(ListRoot, { ...htmlAttributes, className: buildRootClassName({
43
+ bordered,
44
+ split,
45
+ loading,
46
+ size,
47
+ itemLayout,
48
+ className
49
+ }), style, $bordered: bordered, children: [
50
+ header !== void 0 && header !== null && /* @__PURE__ */ jsx(ListHeader, { className: "ant-list-header ds-list-header", children: header }),
51
+ loading && /* @__PURE__ */ jsx(ListLoading, { className: "ant-list-loading ds-list-loading", children: /* @__PURE__ */ jsx(Loader, { size: "M" }) }),
52
+ !loading && hasItems && /* @__PURE__ */ jsx(ListItems, { className: "ant-list-items ds-list-items", children: items.map((item, index) => /* @__PURE__ */ jsx(React.Fragment, { children: renderItem?.(item, index) }, resolveKey(item, index))) }),
53
+ !loading && !hasItems && children,
54
+ loadMore
55
+ ] });
51
56
  };
52
- _List.ItemWrapper = ItemWrapper;
53
- _List.Item = Text;
54
- _List.Divider = ListDivider;
55
- let List = _List;
57
+ function List({
58
+ dataSource,
59
+ radio,
60
+ options,
61
+ dashed,
62
+ ...rest
63
+ }) {
64
+ const content = isNestedArray(dataSource) ? dataSource.map((group, index, groups) => /* @__PURE__ */ jsxs(React.Fragment, { children: [
65
+ /* @__PURE__ */ jsx(SingleList, { ...rest, items: group, header: index === 0 ? rest.header : void 0 }),
66
+ index !== groups.length - 1 && /* @__PURE__ */ jsx(ListDivider, { dashed: Boolean(dashed) })
67
+ ] }, index)) : /* @__PURE__ */ jsx(SingleList, { ...rest, items: dataSource });
68
+ return radio ? /* @__PURE__ */ jsx(Radio.Group, { ...options, children: content }) : /* @__PURE__ */ jsx(Fragment, { children: content });
69
+ }
70
+ List.Item = Text;
71
+ List.ItemWrapper = ItemWrapper;
72
+ List.Divider = ListDivider;
56
73
  export {
57
74
  List as default,
58
75
  isNestedArray
@@ -0,0 +1,8 @@
1
+ export declare const ListRoot: import('styled-components').StyledComponent<"div", any, {
2
+ $bordered?: boolean;
3
+ }, never>;
4
+ /** Reproduces the `.ant-list-header` styling the migration kept in `list.mixin.less`. */
5
+ export declare const ListHeader: import('styled-components').StyledComponent<"div", any, {}, never>;
6
+ /** The `<ul class="ant-list-items">` — reset so items sit flush (antd parity). */
7
+ export declare const ListItems: import('styled-components').StyledComponent<"ul", any, {}, never>;
8
+ export declare const ListLoading: import('styled-components').StyledComponent<"div", any, {}, never>;
@@ -0,0 +1,25 @@
1
+ import styled, { css } from "styled-components";
2
+ const ListRoot = /* @__PURE__ */ styled.div.withConfig({
3
+ displayName: "Liststyles__ListRoot",
4
+ componentId: "sc-jdmigs-0"
5
+ })(["position:relative;", ""], (props) => props.$bordered && css(["border:1px solid ", ";border-radius:3px;"], props.theme.palette["grey-300"]));
6
+ const ListHeader = /* @__PURE__ */ styled.div.withConfig({
7
+ displayName: "Liststyles__ListHeader",
8
+ componentId: "sc-jdmigs-1"
9
+ })(["text-transform:uppercase;font-size:13px;color:", ";padding:8px 12px;border:0;"], ({
10
+ theme
11
+ }) => theme.palette["grey-700"]);
12
+ const ListItems = /* @__PURE__ */ styled.ul.withConfig({
13
+ displayName: "Liststyles__ListItems",
14
+ componentId: "sc-jdmigs-2"
15
+ })(["margin:0;padding:0;list-style:none;"]);
16
+ const ListLoading = /* @__PURE__ */ styled.div.withConfig({
17
+ displayName: "Liststyles__ListLoading",
18
+ componentId: "sc-jdmigs-3"
19
+ })(["display:flex;align-items:center;justify-content:center;padding:16px;"]);
20
+ export {
21
+ ListHeader,
22
+ ListItems,
23
+ ListLoading,
24
+ ListRoot
25
+ };
@@ -1,8 +1,35 @@
1
- import { ListProps } from 'antd';
1
+ import { CSSProperties, Key, ReactNode } from 'react';
2
2
  import { RadioGroupProps } from '@synerise/ds-radio';
3
- export type ListPropsType<T> = Omit<ListProps<T>, 'dataSource' | 'footer'> & {
3
+ import { WithHTMLAttributes } from '@synerise/ds-utils';
4
+ export type ListSize = 'small' | 'default' | 'large';
5
+ export type ListItemLayout = 'horizontal' | 'vertical';
6
+ export type ListPropsType<T> = WithHTMLAttributes<HTMLDivElement, {
7
+ /** Flat list, or an array of groups rendered as separate lists split by a divider. */
4
8
  dataSource: T[] | T[][];
9
+ /** Render a single item. Receives the flattened per-item value and its index. */
10
+ renderItem?: (item: T, index: number) => ReactNode;
11
+ /** Rendered once, above the (first) list. */
12
+ header?: ReactNode;
13
+ /** Wrap the list in a border. */
14
+ bordered?: boolean;
15
+ /** Keep the `ant-list-split` hook (borders between items). Defaults to `true`. */
16
+ split?: boolean;
17
+ /** Show a centered loading indicator instead of the items. */
18
+ loading?: boolean;
19
+ itemLayout?: ListItemLayout;
20
+ size?: ListSize;
21
+ /** Node rendered after the items (e.g. a "load more" button). */
22
+ loadMore?: ReactNode;
23
+ /** Key extractor for items. Defaults to the item index. */
24
+ rowKey?: keyof T | ((item: T) => Key);
25
+ className?: string;
26
+ style?: CSSProperties;
27
+ /** Rendered in place of `dataSource`/`renderItem` when no `renderItem` is given. */
28
+ children?: ReactNode;
29
+ /** Wrap the list in a `Radio.Group` (single-select list). */
5
30
  radio?: boolean;
31
+ /** Props forwarded to the wrapping `Radio.Group` when `radio` is set. */
6
32
  options?: RadioGroupProps;
33
+ /** Dashed divider between groups (nested `dataSource`). */
7
34
  dashed?: boolean;
8
- };
35
+ }>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@synerise/ds-list",
3
- "version": "1.1.41",
3
+ "version": "1.1.43",
4
4
  "description": "List 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"
@@ -35,23 +36,19 @@
35
36
  "check:circular-dependencies": "madge --circular --extensions ts,tsx,js,jsx --ts-config tsconfig.json src/ --exclude '/dist/'",
36
37
  "upgrade:ds": "ncu -f \"@synerise/ds-*\" -u"
37
38
  },
38
- "sideEffects": [
39
- "dist/style/*",
40
- "*.less"
41
- ],
39
+ "sideEffects": false,
42
40
  "types": "dist/index.d.ts",
43
41
  "dependencies": {
44
- "@synerise/ds-divider": "^1.3.15",
45
- "@synerise/ds-radio": "^1.1.17",
46
- "@synerise/ds-utils": "^1.10.1",
47
- "uuid": "^8.3.2"
42
+ "@synerise/ds-divider": "^1.3.16",
43
+ "@synerise/ds-loader": "^1.0.18",
44
+ "@synerise/ds-radio": "^1.1.18",
45
+ "@synerise/ds-utils": "^1.10.2"
48
46
  },
49
47
  "peerDependencies": {
50
48
  "@synerise/ds-core": "*",
51
- "antd": "4.24.16",
52
49
  "react": ">=16.9.0 <= 18.3.1",
53
50
  "styled-components": "^5.3.3",
54
51
  "vitest": "4"
55
52
  },
56
- "gitHead": "dfd892acc1d02abebcf661db3fb32f0fc4b6c354"
53
+ "gitHead": "018414e0d7ffd102a07f8aa35fa2e2d3d4ed19e2"
57
54
  }
File without changes
@@ -1 +0,0 @@
1
- .ant-list{box-sizing:border-box;margin:0;padding:0;color:#6a7580;font-size:13px;font-variant:tabular-nums;line-height:1.38;list-style:none;font-feature-settings:'tnum';position:relative}.ant-list *{outline:0}.ant-list-pagination{margin-top:24px;text-align:right}.ant-list-pagination .ant-pagination-options{text-align:left}.ant-list-more{margin-top:12px;text-align:center}.ant-list-more button{padding-right:32px;padding-left:32px}.ant-list-spin{min-height:40px;text-align:center}.ant-list-empty-text{padding:16px;color:#b5bdc3;font-size:13px;text-align:center}.ant-list-items{margin:0;padding:0;list-style:none}.ant-list-item{display:flex;align-items:center;justify-content:space-between;padding:12px 0;color:#6a7580}.ant-list-item-meta{display:flex;flex:1;align-items:flex-start;max-width:100%}.ant-list-item-meta-avatar{margin-right:16px}.ant-list-item-meta-content{flex:1 0;width:0;color:#6a7580}.ant-list-item-meta-title{margin-bottom:4px;color:#6a7580;font-size:13px;line-height:1.38}.ant-list-item-meta-title>a{color:#6a7580;transition:all .3s}.ant-list-item-meta-title>a:hover{color:#0b68ff}.ant-list-item-meta-description{color:#232936;font-size:13px;line-height:1.38}.ant-list-item-action{flex:0 0 auto;margin-left:48px;padding:0;font-size:0;list-style:none}.ant-list-item-action>li{position:relative;display:inline-block;padding:0 8px;color:#232936;font-size:13px;line-height:1.38;text-align:center}.ant-list-item-action>li:first-child{padding-left:0}.ant-list-item-action-split{position:absolute;top:50%;right:0;width:1px;height:14px;margin-top:-7px;background-color:#e9edee}.ant-list-header{background:0 0}.ant-list-footer{background:0 0}.ant-list-footer,.ant-list-header{padding-top:12px;padding-bottom:12px}.ant-list-empty{padding:16px 0;color:#232936;font-size:12px;text-align:center}.ant-list-split .ant-list-item{border-bottom:1px solid #e9edee}.ant-list-split .ant-list-item:last-child{border-bottom:none}.ant-list-split .ant-list-header{border-bottom:1px solid #e9edee}.ant-list-split.ant-list-empty .ant-list-footer{border-top:1px solid #e9edee}.ant-list-loading .ant-list-spin-nested-loading{min-height:32px}.ant-list-split.ant-list-something-after-last-item .ant-spin-container>.ant-list-items>.ant-list-item:last-child{border-bottom:1px solid #e9edee}.ant-list-lg .ant-list-item{padding:16px 24px}.ant-list-sm .ant-list-item{padding:8px 16px}.ant-list-vertical .ant-list-item{align-items:initial}.ant-list-vertical .ant-list-item-main{display:block;flex:1}.ant-list-vertical .ant-list-item-extra{margin-left:40px}.ant-list-vertical .ant-list-item-meta{margin-bottom:16px}.ant-list-vertical .ant-list-item-meta-title{margin-bottom:12px;color:#384350;font-size:13px;line-height:24px}.ant-list-vertical .ant-list-item-action{margin-top:16px;margin-left:auto}.ant-list-vertical .ant-list-item-action>li{padding:0 16px}.ant-list-vertical .ant-list-item-action>li:first-child{padding-left:0}.ant-list-grid .ant-col>.ant-list-item{display:block;max-width:100%;margin-bottom:16px;padding-top:0;padding-bottom:0;border-bottom:none}.ant-list-item-no-flex{display:block}.ant-list:not(.ant-list-vertical) .ant-list-item-no-flex .ant-list-item-action{float:right}.ant-list-bordered{border:1px solid #dbe0e3;border-radius:3px}.ant-list-bordered .ant-list-header{padding-right:32px;padding-left:32px}.ant-list-bordered .ant-list-footer{padding-right:32px;padding-left:32px}.ant-list-bordered .ant-list-item{padding-right:32px;padding-left:32px}.ant-list-bordered .ant-list-pagination{margin:16px 24px}.ant-list-bordered.ant-list-sm .ant-list-item{padding:8px 16px}.ant-list-bordered.ant-list-sm .ant-list-footer,.ant-list-bordered.ant-list-sm .ant-list-header{padding:8px 16px}.ant-list-bordered.ant-list-lg .ant-list-item{padding:16px 24px}.ant-list-bordered.ant-list-lg .ant-list-footer,.ant-list-bordered.ant-list-lg .ant-list-header{padding:16px 24px}@media screen and (max-width:768px){.ant-list-item-action{margin-left:24px}.ant-list-vertical .ant-list-item-extra{margin-left:24px}}@media screen and (max-width:576px){.ant-list-item{flex-wrap:wrap}.ant-list-item-action{margin-left:12px}.ant-list-vertical .ant-list-item{flex-wrap:wrap-reverse}.ant-list-vertical .ant-list-item-main{min-width:220px}.ant-list-vertical .ant-list-item-extra{margin:auto auto 16px}}.ant-list-rtl{direction:rtl;text-align:right}.ant-list-rtl .ReactVirtualized__List .ant-list-item{direction:rtl}.ant-list-rtl .ant-list-pagination{text-align:left}.ant-list-rtl .ant-list-item-meta-avatar{margin-right:0;margin-left:16px}.ant-list-rtl .ant-list-item-action{margin-right:48px;margin-left:0}.ant-list.ant-list-rtl .ant-list-item-action>li:first-child{padding-right:0;padding-left:16px}.ant-list-rtl .ant-list-item-action-split{right:auto;left:0}.ant-list-rtl.ant-list-vertical .ant-list-item-extra{margin-right:40px;margin-left:0}.ant-list-rtl.ant-list-vertical .ant-list-item-action{margin-right:auto}.ant-list-rtl .ant-list-vertical .ant-list-item-action>li:first-child{padding-right:0;padding-left:16px}.ant-list-rtl .ant-list:not(.ant-list-vertical) .ant-list-item-no-flex .ant-list-item-action{float:left}@media screen and (max-width:768px){.ant-list-rtl .ant-list-item-action{margin-right:24px;margin-left:0}.ant-list-rtl .ant-list-vertical .ant-list-item-extra{margin-right:24px;margin-left:0}}@media screen and (max-width:576px){.ant-list-rtl .ant-list-item-action{margin-right:22px;margin-left:0}.ant-list-rtl.ant-list-vertical .ant-list-item-extra{margin:auto auto 16px}}.ant-dropdown-menu-items{padding:8px;margin:0}.ant-list-header{text-transform:uppercase;font-size:13px;color:#57616d;padding:8px 12px}.ant-list-header.ant-list-header{border:0}