@toptal/picasso-list 3.0.2 → 4.0.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.
@@ -1,16 +1,6 @@
1
- import type { ReactNode } from 'react';
2
- import type { BaseProps } from '@toptal/picasso-shared';
1
+ /// <reference types="react" />
3
2
  import type { Props as ListItemProps } from '../ListItem';
4
- import type { ListItemType } from './context';
5
- export declare type Props = BaseProps & {
6
- children: ReactNode;
7
- /** The variant to use */
8
- variant: 'ordered' | 'unordered';
9
- /** Specifies the start value of the first list item in an ordered list */
10
- start?: number;
11
- /** Style for items bullet/ordinal, can be overridden on a item level */
12
- styleType?: ListItemType;
13
- };
3
+ import type { Props } from './types';
14
4
  export declare const List: {
15
5
  (props: Props): JSX.Element;
16
6
  defaultProps: {
@@ -1 +1 @@
1
- {"version":3,"file":"List.d.ts","sourceRoot":"","sources":["../../../src/List/List.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEtC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAMvD,OAAO,KAAK,EAAE,KAAK,IAAI,aAAa,EAAE,MAAM,aAAa,CAAA;AAEzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAG7C,oBAAY,KAAK,GAAG,SAAS,GAAG;IAC9B,QAAQ,EAAE,SAAS,CAAA;IACnB,yBAAyB;IACzB,OAAO,EAAE,SAAS,GAAG,WAAW,CAAA;IAChC,0EAA0E;IAC1E,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,wEAAwE;IACxE,SAAS,CAAC,EAAE,YAAY,CAAA;CACzB,CAAA;AAoCD,eAAO,MAAM,IAAI;YAAW,KAAK;;;;;;;;;;CA+ChC,CAAA;AAWD,eAAe,IAAI,CAAA"}
1
+ {"version":3,"file":"List.d.ts","sourceRoot":"","sources":["../../../src/List/List.tsx"],"names":[],"mappings":";AAIA,OAAO,KAAK,EAAE,KAAK,IAAI,aAAa,EAAE,MAAM,aAAa,CAAA;AAIzD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAkCpC,eAAO,MAAM,IAAI;YAAW,KAAK;;;;;;;;;;CAiDhC,CAAA;AAWD,eAAe,IAAI,CAAA"}
@@ -1,10 +1,8 @@
1
- import React from 'react';
2
- import { makeStyles } from '@material-ui/core/styles';
3
- import cx from 'classnames';
1
+ import React, { useMemo } from 'react';
2
+ import { twMerge } from '@toptal/picasso-tailwind-merge';
4
3
  import { ListItem } from '../ListItem';
5
- import styles from './styles';
6
4
  import { ListContextProvider, useListContext } from './context';
7
- const useStyles = makeStyles(styles, { name: 'PicassoList' });
5
+ import { listStyleTypeClass, getPaddingClasses } from './styles';
8
6
  const Tags = {
9
7
  unordered: 'ul',
10
8
  ordered: 'ol',
@@ -31,8 +29,6 @@ const getDefaultType = (variant, level) => {
31
29
  }
32
30
  };
33
31
  export const List = (props) => {
34
- var _a;
35
- const classes = useStyles();
36
32
  const { variant, children, start = 1, className, styleType, 'data-testid': testId, } = props;
37
33
  const { level } = useListContext();
38
34
  const totalChildElements = React.Children.count(children);
@@ -47,9 +43,11 @@ export const List = (props) => {
47
43
  });
48
44
  });
49
45
  const ListTag = Tags[variant];
50
- return (React.createElement(ListTag, { start: start !== 1 ? start : undefined, className: cx(classes.root, classes[variant], classes[(_a = styleType !== null && styleType !== void 0 ? styleType : getDefaultType(variant, level)) !== null && _a !== void 0 ? _a : ''], {
51
- [classes.firstLevel]: level === 0,
52
- }, className), "data-testid": testId },
46
+ const classes = useMemo(() => {
47
+ var _a;
48
+ return twMerge('text-[0.875rem] text-black mt-1', listStyleTypeClass[(_a = styleType !== null && styleType !== void 0 ? styleType : getDefaultType(variant, level)) !== null && _a !== void 0 ? _a : ''], getPaddingClasses({ variant, level }), className);
49
+ }, [variant, styleType, level, className]);
50
+ return (React.createElement(ListTag, { start: start !== 1 ? start : undefined, className: classes, "data-testid": testId },
53
51
  React.createElement(ListContextProvider, { styleType: styleType }, listItems)));
54
52
  };
55
53
  List.defaultProps = {
@@ -1 +1 @@
1
- {"version":3,"file":"List.js","sourceRoot":"","sources":["../../../src/List/List.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"List.js","sourceRoot":"","sources":["../../../src/List/List.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAA;AAExD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAEtC,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAC/D,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;AAIhE,MAAM,IAAI,GAAG;IACX,SAAS,EAAE,IAAI;IACf,OAAO,EAAE,IAAI;CACL,CAAA;AAEV,MAAM,mBAAmB,GAAG,CAAC,KAAa,EAAgB,EAAE;IAC1D,MAAM,SAAS,GAAG,KAAK,GAAG,CAAC,CAAA;IAE3B,QAAQ,SAAS,EAAE;QACjB,KAAK,CAAC;YACJ,OAAO,SAAS,CAAA;QAClB,KAAK,CAAC;YACJ,OAAO,OAAO,CAAA;QAChB,KAAK,CAAC;YACJ,OAAO,OAAO,CAAA;QAChB;YACE,MAAM,IAAI,KAAK,CAAC,sBAAsB,SAAS,EAAE,CAAC,CAAA;KACrD;AACH,CAAC,CAAA;AAED,MAAM,cAAc,GAAG,CACrB,OAAyB,EACzB,KAAa,EACC,EAAE;IAChB,QAAQ,OAAO,EAAE;QACf,KAAK,SAAS;YACZ,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAAA;QACnC,KAAK,WAAW;YACd,OAAO,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAA;KAC7C;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,KAAY,EAAE,EAAE;IACnC,MAAM,EACJ,OAAO,EACP,QAAQ,EACR,KAAK,GAAG,CAAC,EACT,SAAS,EACT,SAAS,EACT,aAAa,EAAE,MAAM,GACtB,GAAG,KAAK,CAAA;IACT,MAAM,EAAE,KAAK,EAAE,GAAG,cAAc,EAAE,CAAA;IAElC,MAAM,kBAAkB,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;IAEzD,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QAC9D,IAAI,CAAC,KAAK,CAAC,cAAc,CAAgB,KAAK,CAAC,EAAE;YAC/C,OAAO,KAAK,CAAA;SACb;QAED,OAAO,KAAK,CAAC,YAAY,CAAgB,KAAK,EAAE;YAC9C,OAAO;YACP,aAAa,EAAE,kBAAkB,KAAK,KAAK,GAAG,CAAC;YAC/C,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,CAAC;SACzB,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,CAAA;IAE7B,MAAM,OAAO,GAAG,OAAO,CACrB,GAAG,EAAE;;QACH,OAAA,OAAO,CACL,iCAAiC,EACjC,kBAAkB,CAAC,MAAA,SAAS,aAAT,SAAS,cAAT,SAAS,GAAI,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,mCAAI,EAAE,CAAC,EACrE,iBAAiB,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EACrC,SAAS,CACV,CAAA;KAAA,EACH,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,CAAC,CACvC,CAAA;IAED,OAAO,CACL,oBAAC,OAAO,IACN,KAAK,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,EACtC,SAAS,EAAE,OAAO,iBACL,MAAM;QAEnB,oBAAC,mBAAmB,IAAC,SAAS,EAAE,SAAS,IACtC,SAAS,CACU,CACd,CACX,CAAA;AACH,CAAC,CAAA;AAED,IAAI,CAAC,YAAY,GAAG;IAClB,OAAO,EAAE,WAAW;IACpB,KAAK,EAAE,CAAC;CACT,CAAA;AAED,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAA;AAEpB,IAAI,CAAC,WAAW,GAAG,MAAM,CAAA;AAEzB,eAAe,IAAI,CAAA"}
@@ -1,5 +1,5 @@
1
1
  import type { OmitInternalProps } from '@toptal/picasso-shared';
2
- import type { Props } from './List';
2
+ import type { Props } from './types';
3
3
  export { default as List } from './List';
4
4
  export declare type ListProps = OmitInternalProps<Props>;
5
5
  export { useListContext } from './context';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/List/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAE/D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AAEnC,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,QAAQ,CAAA;AACxC,oBAAY,SAAS,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAA;AAEhD,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAC1C,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/List/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAE/D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAEpC,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,QAAQ,CAAA;AACxC,oBAAY,SAAS,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAA;AAEhD,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAC1C,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA"}
@@ -1,4 +1,8 @@
1
- import type { Theme } from '@material-ui/core/styles';
2
- declare const _default: ({ typography }: Theme) => import("@material-ui/styles").StyleRules<{}, "circle" | "disc" | "checkmark" | "arrow" | "numeral" | "alpha" | "roman" | "root" | "unordered" | "firstLevel">;
3
- export default _default;
1
+ import type { ListItemType } from './context';
2
+ import type { Variant } from './types';
3
+ export declare const listStyleTypeClass: Record<ListItemType, string>;
4
+ export declare const getPaddingClasses: ({ variant, level, }: {
5
+ variant: Variant;
6
+ level: number;
7
+ }) => "pl-4" | "pl-6";
4
8
  //# sourceMappingURL=styles.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../src/List/styles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAA;yCAOrB,KAAK;AAArC,wBAeI"}
1
+ {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../src/List/styles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAC7C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAEtC,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,CAQ3D,CAAA;AAED,eAAO,MAAM,iBAAiB;aAInB,OAAO;WACT,MAAM;qBACiD,CAAA"}
@@ -1,15 +1,11 @@
1
- import { createStyles } from '@material-ui/core/styles';
2
- import { rem } from '@toptal/picasso-shared';
3
- import { palette } from '@toptal/picasso-utils';
4
- import { listStyleTypes } from '../ListItem/styles';
5
- export default ({ typography }) => createStyles(Object.assign({ root: {
6
- fontSize: typography.fontSizes.medium,
7
- color: palette.common.black,
8
- marginTop: rem(4),
9
- paddingLeft: rem(16),
10
- }, unordered: {
11
- paddingLeft: rem(24),
12
- }, firstLevel: {
13
- paddingLeft: rem(16),
14
- } }, listStyleTypes));
1
+ export const listStyleTypeClass = {
2
+ circle: 'list-[circle]',
3
+ disc: 'list-disc',
4
+ checkmark: 'list-none',
5
+ arrow: 'list-none',
6
+ numeral: 'list-decimal',
7
+ alpha: 'list-[lower-alpha]',
8
+ roman: 'list-[lower-roman]',
9
+ };
10
+ export const getPaddingClasses = ({ variant, level, }) => (level === 0 || variant !== 'unordered' ? 'pl-4' : 'pl-6');
15
11
  //# sourceMappingURL=styles.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../src/List/styles.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,GAAG,EAAE,MAAM,wBAAwB,CAAA;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAE/C,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAEnD,eAAe,CAAC,EAAE,UAAU,EAAS,EAAE,EAAE,CACvC,YAAY,iBACV,IAAI,EAAE;QACJ,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,MAAM;QACrC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK;QAC3B,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC;QACjB,WAAW,EAAE,GAAG,CAAC,EAAE,CAAC;KACrB,EACD,SAAS,EAAE;QACT,WAAW,EAAE,GAAG,CAAC,EAAE,CAAC;KACrB,EACD,UAAU,EAAE;QACV,WAAW,EAAE,GAAG,CAAC,EAAE,CAAC;KACrB,IACE,cAAc,EACjB,CAAA"}
1
+ {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../src/List/styles.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,kBAAkB,GAAiC;IAC9D,MAAM,EAAE,eAAe;IACvB,IAAI,EAAE,WAAW;IACjB,SAAS,EAAE,WAAW;IACtB,KAAK,EAAE,WAAW;IAClB,OAAO,EAAE,cAAc;IACvB,KAAK,EAAE,oBAAoB;IAC3B,KAAK,EAAE,oBAAoB;CAC5B,CAAA;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,EAChC,OAAO,EACP,KAAK,GAIN,EAAE,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,OAAO,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA"}
@@ -0,0 +1,14 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { BaseProps } from '@toptal/picasso-shared';
3
+ import type { ListItemType } from './context';
4
+ export declare type Variant = 'ordered' | 'unordered';
5
+ export declare type Props = BaseProps & {
6
+ children: ReactNode;
7
+ /** The variant to use */
8
+ variant: Variant;
9
+ /** Specifies the start value of the first list item in an ordered list */
10
+ start?: number;
11
+ /** Style for items bullet/ordinal, can be overridden on a item level */
12
+ styleType?: ListItemType;
13
+ };
14
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/List/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACtC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAEvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAE7C,oBAAY,OAAO,GAAG,SAAS,GAAG,WAAW,CAAA;AAE7C,oBAAY,KAAK,GAAG,SAAS,GAAG;IAC9B,QAAQ,EAAE,SAAS,CAAA;IACnB,yBAAyB;IACzB,OAAO,EAAE,OAAO,CAAA;IAChB,0EAA0E;IAC1E,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,wEAAwE;IACxE,SAAS,CAAC,EAAE,YAAY,CAAA;CACzB,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/List/types.ts"],"names":[],"mappings":""}
@@ -1,10 +1,11 @@
1
1
  import type { ReactNode } from 'react';
2
2
  import type { BaseProps } from '@toptal/picasso-shared';
3
3
  import type { ListItemType } from '../List';
4
+ import type { Variant } from '../List/types';
4
5
  export declare type Props = BaseProps & {
5
6
  children: ReactNode;
6
- variant?: 'ordered' | 'unordered';
7
7
  index?: number;
8
+ variant?: Variant;
8
9
  /**
9
10
  * @deprecated [FX-4717] if you need a custom icon that is not available on the prop `type`, please contact the BASE team to add it to the theme
10
11
  **/
@@ -1 +1 @@
1
- {"version":3,"file":"ListItem.d.ts","sourceRoot":"","sources":["../../../src/ListItem/ListItem.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEtC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAUvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAG3C,oBAAY,KAAK,GAAG,SAAS,GAAG;IAC9B,QAAQ,EAAE,SAAS,CAAA;IACnB,OAAO,CAAC,EAAE,SAAS,GAAG,WAAW,CAAA;IACjC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;QAEI;IACJ,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,kCAAkC;IAClC,IAAI,CAAC,EAAE,YAAY,CAAA;IACnB,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB,CAAA;AAeD,eAAO,MAAM,QAAQ;YAAW,KAAK;;CAsCpC,CAAA;AAID,eAAe,QAAQ,CAAA"}
1
+ {"version":3,"file":"ListItem.d.ts","sourceRoot":"","sources":["../../../src/ListItem/ListItem.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACtC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAOvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAG3C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAa5C,oBAAY,KAAK,GAAG,SAAS,GAAG;IAC9B,QAAQ,EAAE,SAAS,CAAA;IACnB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB;;QAEI;IACJ,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,kCAAkC;IAClC,IAAI,CAAC,EAAE,YAAY,CAAA;IACnB,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB,CAAA;AAED,eAAO,MAAM,QAAQ;YAAW,KAAK;;CAoCpC,CAAA;AAID,eAAe,QAAQ,CAAA"}
@@ -1,13 +1,11 @@
1
1
  import React from 'react';
2
- import { makeStyles } from '@material-ui/core/styles';
3
- import cx from 'classnames';
4
2
  import { Container } from '@toptal/picasso-container';
5
3
  import { Typography } from '@toptal/picasso-typography';
6
4
  import { usePropDeprecationWarning } from '@toptal/picasso-utils';
7
5
  import { ArrowLongRight16, Check16 } from '@toptal/picasso-icons';
8
- import styles from './styles';
6
+ import { twJoin } from '@toptal/picasso-tailwind-merge';
9
7
  import { useListContext } from '../List';
10
- const useStyles = makeStyles(styles, { name: 'PicassoListItem' });
8
+ import { listStyleTypeClass } from '../List/styles';
11
9
  const resolveIcon = (type) => {
12
10
  switch (type) {
13
11
  case 'checkmark':
@@ -19,20 +17,16 @@ const resolveIcon = (type) => {
19
17
  }
20
18
  };
21
19
  export const ListItem = (props) => {
22
- const classes = useStyles();
23
20
  const { styleType: parentType } = useListContext();
24
- const { children, variant = 'unordered', type, icon = resolveIcon(type !== null && type !== void 0 ? type : parentType), 'data-testid': testId, } = props;
21
+ const { children, type, icon = resolveIcon(type !== null && type !== void 0 ? type : parentType), 'data-testid': testId, } = props;
25
22
  // TODO: [FX-4717]
26
23
  usePropDeprecationWarning({
27
24
  props,
28
25
  componentName: ListItem.name,
29
26
  name: 'icon',
30
27
  });
31
- return (React.createElement("li", { className: cx(classes.root, classes[variant], {
32
- [classes.hasIcon]: icon != null,
33
- [classes[type !== null && type !== void 0 ? type : '']]: type != null,
34
- }), "data-testid": testId },
35
- React.createElement(Container, { flex: true, direction: 'row', className: cx(classes.listContainer) },
28
+ return (React.createElement("li", { className: twJoin(icon && 'list-none -ml-[1.375rem]', type && listStyleTypeClass[type]), "data-testid": testId },
29
+ React.createElement(Container, { flex: true, direction: 'row', className: 'mt-1' },
36
30
  icon && (React.createElement(Container, { inline: true, justifyContent: 'flex-end' }, icon)),
37
31
  React.createElement(Typography, { as: 'div', size: 'medium', className: 'pl-2' }, children))));
38
32
  };
@@ -1 +1 @@
1
- {"version":3,"file":"ListItem.js","sourceRoot":"","sources":["../../../src/ListItem/ListItem.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AACrD,OAAO,EAAE,MAAM,YAAY,CAAA;AAC3B,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AACvD,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAA;AACjE,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAEjE,OAAO,MAAM,MAAM,UAAU,CAAA;AAE7B,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAexC,MAAM,SAAS,GAAG,UAAU,CAAQ,MAAM,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAA;AAExE,MAAM,WAAW,GAAG,CAAC,IAA8B,EAAE,EAAE;IACrD,QAAQ,IAAI,EAAE;QACZ,KAAK,WAAW;YACd,OAAO,oBAAC,OAAO,OAAG,CAAA;QACpB,KAAK,OAAO;YACV,OAAO,oBAAC,gBAAgB,OAAG,CAAA;QAC7B;YACE,OAAO,SAAS,CAAA;KACnB;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,KAAY,EAAE,EAAE;IACvC,MAAM,OAAO,GAAG,SAAS,EAAE,CAAA;IAC3B,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,cAAc,EAAE,CAAA;IAClD,MAAM,EACJ,QAAQ,EACR,OAAO,GAAG,WAAW,EACrB,IAAI,EACJ,IAAI,GAAG,WAAW,CAAC,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,UAAU,CAAC,EACtC,aAAa,EAAE,MAAM,GACtB,GAAG,KAAK,CAAA;IAET,kBAAkB;IAClB,yBAAyB,CAAC;QACxB,KAAK;QACL,aAAa,EAAE,QAAQ,CAAC,IAAI;QAC5B,IAAI,EAAE,MAAM;KACb,CAAC,CAAA;IAEF,OAAO,CACL,4BACE,SAAS,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE;YAC5C,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,IAAI,IAAI,IAAI;YAC/B,CAAC,OAAO,CAAC,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,EAAE,CAAC,CAAC,EAAE,IAAI,IAAI,IAAI;SACpC,CAAC,iBACW,MAAM;QAEnB,oBAAC,SAAS,IAAC,IAAI,QAAC,SAAS,EAAC,KAAK,EAAC,SAAS,EAAE,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC;YACjE,IAAI,IAAI,CACP,oBAAC,SAAS,IAAC,MAAM,QAAC,cAAc,EAAC,UAAU,IACxC,IAAI,CACK,CACb;YACD,oBAAC,UAAU,IAAC,EAAE,EAAC,KAAK,EAAC,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,MAAM,IAChD,QAAQ,CACE,CACH,CACT,CACN,CAAA;AACH,CAAC,CAAA;AAED,QAAQ,CAAC,WAAW,GAAG,UAAU,CAAA;AAEjC,eAAe,QAAQ,CAAA"}
1
+ {"version":3,"file":"ListItem.js","sourceRoot":"","sources":["../../../src/ListItem/ListItem.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AACvD,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAA;AACjE,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AACjE,OAAO,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAA;AAGvD,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AAGnD,MAAM,WAAW,GAAG,CAAC,IAA8B,EAAE,EAAE;IACrD,QAAQ,IAAI,EAAE;QACZ,KAAK,WAAW;YACd,OAAO,oBAAC,OAAO,OAAG,CAAA;QACpB,KAAK,OAAO;YACV,OAAO,oBAAC,gBAAgB,OAAG,CAAA;QAC7B;YACE,OAAO,SAAS,CAAA;KACnB;AACH,CAAC,CAAA;AAeD,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,KAAY,EAAE,EAAE;IACvC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,cAAc,EAAE,CAAA;IAClD,MAAM,EACJ,QAAQ,EACR,IAAI,EACJ,IAAI,GAAG,WAAW,CAAC,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,UAAU,CAAC,EACtC,aAAa,EAAE,MAAM,GACtB,GAAG,KAAK,CAAA;IAET,kBAAkB;IAClB,yBAAyB,CAAC;QACxB,KAAK;QACL,aAAa,EAAE,QAAQ,CAAC,IAAI;QAC5B,IAAI,EAAE,MAAM;KACb,CAAC,CAAA;IAEF,OAAO,CACL,4BACE,SAAS,EAAE,MAAM,CACf,IAAI,IAAI,0BAA0B,EAClC,IAAI,IAAI,kBAAkB,CAAC,IAAI,CAAC,CACjC,iBACY,MAAM;QAEnB,oBAAC,SAAS,IAAC,IAAI,QAAC,SAAS,EAAC,KAAK,EAAC,SAAS,EAAC,MAAM;YAC7C,IAAI,IAAI,CACP,oBAAC,SAAS,IAAC,MAAM,QAAC,cAAc,EAAC,UAAU,IACxC,IAAI,CACK,CACb;YACD,oBAAC,UAAU,IAAC,EAAE,EAAC,KAAK,EAAC,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,MAAM,IAChD,QAAQ,CACE,CACH,CACT,CACN,CAAA;AACH,CAAC,CAAA;AAED,QAAQ,CAAC,WAAW,GAAG,UAAU,CAAA;AAEjC,eAAe,QAAQ,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@toptal/picasso-list",
3
- "version": "3.0.2",
3
+ "version": "4.0.0",
4
4
  "description": "Toptal UI components library - List",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -34,9 +34,9 @@
34
34
  "**/styles.js"
35
35
  ],
36
36
  "peerDependencies": {
37
- "@material-ui/core": "4.12.4",
38
37
  "@toptal/picasso-provider": "*",
39
38
  "@toptal/picasso-tailwind": ">=2.7",
39
+ "@toptal/picasso-tailwind-merge": "^2.0.0",
40
40
  "react": ">=16.12.0 < 19.0.0"
41
41
  },
42
42
  "exports": {
@@ -44,7 +44,8 @@
44
44
  },
45
45
  "devDependencies": {
46
46
  "@toptal/picasso-provider": "5.0.0",
47
- "@toptal/picasso-test-utils": "1.1.1"
47
+ "@toptal/picasso-test-utils": "1.1.1",
48
+ "@toptal/picasso-tailwind-merge": "2.0.0"
48
49
  },
49
50
  "files": [
50
51
  "dist-package/**",
package/src/List/List.tsx CHANGED
@@ -1,27 +1,12 @@
1
- import type { ReactNode } from 'react'
2
- import React from 'react'
3
- import type { BaseProps } from '@toptal/picasso-shared'
4
- import type { Theme } from '@material-ui/core/styles'
5
- import { makeStyles } from '@material-ui/core/styles'
6
- import cx from 'classnames'
1
+ import React, { useMemo } from 'react'
2
+ import { twMerge } from '@toptal/picasso-tailwind-merge'
7
3
 
8
4
  import { ListItem } from '../ListItem'
9
5
  import type { Props as ListItemProps } from '../ListItem'
10
- import styles from './styles'
11
- import type { ListItemType } from './context'
12
6
  import { ListContextProvider, useListContext } from './context'
13
-
14
- export type Props = BaseProps & {
15
- children: ReactNode
16
- /** The variant to use */
17
- variant: 'ordered' | 'unordered'
18
- /** Specifies the start value of the first list item in an ordered list */
19
- start?: number
20
- /** Style for items bullet/ordinal, can be overridden on a item level */
21
- styleType?: ListItemType
22
- }
23
-
24
- const useStyles = makeStyles<Theme>(styles, { name: 'PicassoList' })
7
+ import { listStyleTypeClass, getPaddingClasses } from './styles'
8
+ import type { ListItemType } from './context'
9
+ import type { Props } from './types'
25
10
 
26
11
  const Tags = {
27
12
  unordered: 'ul',
@@ -56,7 +41,6 @@ const getDefaultType = (
56
41
  }
57
42
 
58
43
  export const List = (props: Props) => {
59
- const classes = useStyles()
60
44
  const {
61
45
  variant,
62
46
  children,
@@ -83,18 +67,21 @@ export const List = (props: Props) => {
83
67
 
84
68
  const ListTag = Tags[variant]
85
69
 
70
+ const classes = useMemo(
71
+ () =>
72
+ twMerge(
73
+ 'text-[0.875rem] text-black mt-1',
74
+ listStyleTypeClass[styleType ?? getDefaultType(variant, level) ?? ''],
75
+ getPaddingClasses({ variant, level }),
76
+ className
77
+ ),
78
+ [variant, styleType, level, className]
79
+ )
80
+
86
81
  return (
87
82
  <ListTag
88
83
  start={start !== 1 ? start : undefined}
89
- className={cx(
90
- classes.root,
91
- classes[variant],
92
- classes[styleType ?? getDefaultType(variant, level) ?? ''],
93
- {
94
- [classes.firstLevel]: level === 0,
95
- },
96
- className
97
- )}
84
+ className={classes}
98
85
  data-testid={testId}
99
86
  >
100
87
  <ListContextProvider styleType={styleType}>
@@ -6,14 +6,14 @@ exports[`List renders ordered list 1`] = `
6
6
  class="Picasso-root"
7
7
  >
8
8
  <ol
9
- class="PicassoList-root PicassoList-numeral PicassoList-firstLevel"
9
+ class="text-[0.875rem] text-black mt-1 list-decimal pl-4"
10
10
  data-testid="ordered-list"
11
11
  >
12
12
  <li
13
13
  class=""
14
14
  >
15
15
  <div
16
- class="flex PicassoListItem-listContainer"
16
+ class="flex mt-1"
17
17
  >
18
18
  <div
19
19
  class="m-0 text-md text-graphite font-regular pl-2"
@@ -26,7 +26,7 @@ exports[`List renders ordered list 1`] = `
26
26
  class=""
27
27
  >
28
28
  <div
29
- class="flex PicassoListItem-listContainer"
29
+ class="flex mt-1"
30
30
  >
31
31
  <div
32
32
  class="m-0 text-md text-graphite font-regular pl-2"
@@ -39,7 +39,7 @@ exports[`List renders ordered list 1`] = `
39
39
  class=""
40
40
  >
41
41
  <div
42
- class="flex PicassoListItem-listContainer"
42
+ class="flex mt-1"
43
43
  >
44
44
  <div
45
45
  class="m-0 text-md text-graphite font-regular pl-2"
@@ -52,7 +52,7 @@ exports[`List renders ordered list 1`] = `
52
52
  class=""
53
53
  >
54
54
  <div
55
- class="flex PicassoListItem-listContainer"
55
+ class="flex mt-1"
56
56
  >
57
57
  <div
58
58
  class="m-0 text-md text-graphite font-regular pl-2"
@@ -65,7 +65,7 @@ exports[`List renders ordered list 1`] = `
65
65
  class=""
66
66
  >
67
67
  <div
68
- class="flex PicassoListItem-listContainer"
68
+ class="flex mt-1"
69
69
  >
70
70
  <div
71
71
  class="m-0 text-md text-graphite font-regular pl-2"
@@ -85,14 +85,14 @@ exports[`List renders unordered list 1`] = `
85
85
  class="Picasso-root"
86
86
  >
87
87
  <ul
88
- class="PicassoList-root PicassoList-unordered PicassoList-disc PicassoList-firstLevel"
88
+ class="text-[0.875rem] text-black mt-1 list-disc pl-4"
89
89
  data-testid="unordered-list"
90
90
  >
91
91
  <li
92
92
  class=""
93
93
  >
94
94
  <div
95
- class="flex PicassoListItem-listContainer"
95
+ class="flex mt-1"
96
96
  >
97
97
  <div
98
98
  class="m-0 text-md text-graphite font-regular pl-2"
@@ -105,7 +105,7 @@ exports[`List renders unordered list 1`] = `
105
105
  class=""
106
106
  >
107
107
  <div
108
- class="flex PicassoListItem-listContainer"
108
+ class="flex mt-1"
109
109
  >
110
110
  <div
111
111
  class="m-0 text-md text-graphite font-regular pl-2"
@@ -118,7 +118,7 @@ exports[`List renders unordered list 1`] = `
118
118
  class=""
119
119
  >
120
120
  <div
121
- class="flex PicassoListItem-listContainer"
121
+ class="flex mt-1"
122
122
  >
123
123
  <div
124
124
  class="m-0 text-md text-graphite font-regular pl-2"
@@ -131,7 +131,7 @@ exports[`List renders unordered list 1`] = `
131
131
  class=""
132
132
  >
133
133
  <div
134
- class="flex PicassoListItem-listContainer"
134
+ class="flex mt-1"
135
135
  >
136
136
  <div
137
137
  class="m-0 text-md text-graphite font-regular pl-2"
@@ -144,7 +144,7 @@ exports[`List renders unordered list 1`] = `
144
144
  class=""
145
145
  >
146
146
  <div
147
- class="flex PicassoListItem-listContainer"
147
+ class="flex mt-1"
148
148
  >
149
149
  <div
150
150
  class="m-0 text-md text-graphite font-regular pl-2"
package/src/List/index.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import type { OmitInternalProps } from '@toptal/picasso-shared'
2
2
 
3
- import type { Props } from './List'
3
+ import type { Props } from './types'
4
4
 
5
5
  export { default as List } from './List'
6
6
  export type ListProps = OmitInternalProps<Props>
@@ -1,23 +1,20 @@
1
- import type { Theme } from '@material-ui/core/styles'
2
- import { createStyles } from '@material-ui/core/styles'
3
- import { rem } from '@toptal/picasso-shared'
4
- import { palette } from '@toptal/picasso-utils'
1
+ import type { ListItemType } from './context'
2
+ import type { Variant } from './types'
5
3
 
6
- import { listStyleTypes } from '../ListItem/styles'
4
+ export const listStyleTypeClass: Record<ListItemType, string> = {
5
+ circle: 'list-[circle]',
6
+ disc: 'list-disc',
7
+ checkmark: 'list-none',
8
+ arrow: 'list-none',
9
+ numeral: 'list-decimal',
10
+ alpha: 'list-[lower-alpha]',
11
+ roman: 'list-[lower-roman]',
12
+ }
7
13
 
8
- export default ({ typography }: Theme) =>
9
- createStyles({
10
- root: {
11
- fontSize: typography.fontSizes.medium,
12
- color: palette.common.black,
13
- marginTop: rem(4),
14
- paddingLeft: rem(16),
15
- },
16
- unordered: {
17
- paddingLeft: rem(24),
18
- },
19
- firstLevel: {
20
- paddingLeft: rem(16),
21
- },
22
- ...listStyleTypes,
23
- })
14
+ export const getPaddingClasses = ({
15
+ variant,
16
+ level,
17
+ }: {
18
+ variant: Variant
19
+ level: number
20
+ }) => (level === 0 || variant !== 'unordered' ? 'pl-4' : 'pl-6')
@@ -0,0 +1,16 @@
1
+ import type { ReactNode } from 'react'
2
+ import type { BaseProps } from '@toptal/picasso-shared'
3
+
4
+ import type { ListItemType } from './context'
5
+
6
+ export type Variant = 'ordered' | 'unordered'
7
+
8
+ export type Props = BaseProps & {
9
+ children: ReactNode
10
+ /** The variant to use */
11
+ variant: Variant
12
+ /** Specifies the start value of the first list item in an ordered list */
13
+ start?: number
14
+ /** Style for items bullet/ordinal, can be overridden on a item level */
15
+ styleType?: ListItemType
16
+ }
@@ -1,22 +1,32 @@
1
- import type { ReactNode } from 'react'
2
1
  import React from 'react'
2
+ import type { ReactNode } from 'react'
3
3
  import type { BaseProps } from '@toptal/picasso-shared'
4
- import type { Theme } from '@material-ui/core/styles'
5
- import { makeStyles } from '@material-ui/core/styles'
6
- import cx from 'classnames'
7
4
  import { Container } from '@toptal/picasso-container'
8
5
  import { Typography } from '@toptal/picasso-typography'
9
6
  import { usePropDeprecationWarning } from '@toptal/picasso-utils'
10
7
  import { ArrowLongRight16, Check16 } from '@toptal/picasso-icons'
8
+ import { twJoin } from '@toptal/picasso-tailwind-merge'
11
9
 
12
- import styles from './styles'
13
10
  import type { ListItemType } from '../List'
14
11
  import { useListContext } from '../List'
12
+ import { listStyleTypeClass } from '../List/styles'
13
+ import type { Variant } from '../List/types'
14
+
15
+ const resolveIcon = (type: ListItemType | undefined) => {
16
+ switch (type) {
17
+ case 'checkmark':
18
+ return <Check16 />
19
+ case 'arrow':
20
+ return <ArrowLongRight16 />
21
+ default:
22
+ return undefined
23
+ }
24
+ }
15
25
 
16
26
  export type Props = BaseProps & {
17
27
  children: ReactNode
18
- variant?: 'ordered' | 'unordered'
19
28
  index?: number
29
+ variant?: Variant
20
30
  /**
21
31
  * @deprecated [FX-4717] if you need a custom icon that is not available on the prop `type`, please contact the BASE team to add it to the theme
22
32
  **/
@@ -26,25 +36,10 @@ export type Props = BaseProps & {
26
36
  isLastElement?: boolean
27
37
  }
28
38
 
29
- const useStyles = makeStyles<Theme>(styles, { name: 'PicassoListItem' })
30
-
31
- const resolveIcon = (type: ListItemType | undefined) => {
32
- switch (type) {
33
- case 'checkmark':
34
- return <Check16 />
35
- case 'arrow':
36
- return <ArrowLongRight16 />
37
- default:
38
- return undefined
39
- }
40
- }
41
-
42
39
  export const ListItem = (props: Props) => {
43
- const classes = useStyles()
44
40
  const { styleType: parentType } = useListContext()
45
41
  const {
46
42
  children,
47
- variant = 'unordered',
48
43
  type,
49
44
  icon = resolveIcon(type ?? parentType),
50
45
  'data-testid': testId,
@@ -59,13 +54,13 @@ export const ListItem = (props: Props) => {
59
54
 
60
55
  return (
61
56
  <li
62
- className={cx(classes.root, classes[variant], {
63
- [classes.hasIcon]: icon != null,
64
- [classes[type ?? '']]: type != null,
65
- })}
57
+ className={twJoin(
58
+ icon && 'list-none -ml-[1.375rem]',
59
+ type && listStyleTypeClass[type]
60
+ )}
66
61
  data-testid={testId}
67
62
  >
68
- <Container flex direction='row' className={cx(classes.listContainer)}>
63
+ <Container flex direction='row' className='mt-1'>
69
64
  {icon && (
70
65
  <Container inline justifyContent='flex-end'>
71
66
  {icon}
@@ -1,6 +0,0 @@
1
- import type { StyleRules } from '@material-ui/core/styles';
2
- import type { ListItemType } from '../List/context';
3
- export declare const listStyleTypes: StyleRules<ListItemType>;
4
- declare const _default: () => import("@material-ui/styles").StyleRules<{}, "circle" | "disc" | "checkmark" | "arrow" | "numeral" | "alpha" | "roman" | "listContainer" | "hasIcon">;
5
- export default _default;
6
- //# sourceMappingURL=styles.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../src/ListItem/styles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAK1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAYnD,eAAO,MAAM,cAAc,EAAE,UAAU,CAAC,YAAY,CAsBnD,CAAA;;AAED,wBAUI"}
@@ -1,42 +0,0 @@
1
- import { createStyles } from '@material-ui/core/styles';
2
- import { PicassoProvider } from '@toptal/picasso-provider';
3
- import { rem } from '@toptal/picasso-shared';
4
- PicassoProvider.override(() => ({
5
- MuiListItem: {
6
- root: {
7
- '&$focusVisible': {
8
- backgroundColor: 'unset !important',
9
- },
10
- },
11
- },
12
- }));
13
- export const listStyleTypes = {
14
- circle: {
15
- listStyleType: 'circle',
16
- },
17
- disc: {
18
- listStyleType: 'disc',
19
- },
20
- checkmark: {
21
- listStyleType: 'none',
22
- },
23
- arrow: {
24
- listStyleType: 'none',
25
- },
26
- numeral: {
27
- listStyleType: 'decimal',
28
- },
29
- alpha: {
30
- listStyleType: 'lower-alpha',
31
- },
32
- roman: {
33
- listStyleType: 'lower-roman',
34
- },
35
- };
36
- export default () => createStyles(Object.assign({ listContainer: {
37
- marginTop: rem(4),
38
- }, hasIcon: {
39
- listStyleType: 'none',
40
- marginLeft: rem(-22),
41
- } }, listStyleTypes));
42
- //# sourceMappingURL=styles.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../src/ListItem/styles.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,EAAE,GAAG,EAAE,MAAM,wBAAwB,CAAA;AAI5C,eAAe,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC;IAC9B,WAAW,EAAE;QACX,IAAI,EAAE;YACJ,gBAAgB,EAAE;gBAChB,eAAe,EAAE,kBAAkB;aACpC;SACF;KACF;CACF,CAAC,CAAC,CAAA;AAEH,MAAM,CAAC,MAAM,cAAc,GAA6B;IACtD,MAAM,EAAE;QACN,aAAa,EAAE,QAAQ;KACxB;IACD,IAAI,EAAE;QACJ,aAAa,EAAE,MAAM;KACtB;IACD,SAAS,EAAE;QACT,aAAa,EAAE,MAAM;KACtB;IACD,KAAK,EAAE;QACL,aAAa,EAAE,MAAM;KACtB;IACD,OAAO,EAAE;QACP,aAAa,EAAE,SAAS;KACzB;IACD,KAAK,EAAE;QACL,aAAa,EAAE,aAAa;KAC7B;IACD,KAAK,EAAE;QACL,aAAa,EAAE,aAAa;KAC7B;CACF,CAAA;AAED,eAAe,GAAG,EAAE,CAClB,YAAY,iBACV,aAAa,EAAE;QACb,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC;KAClB,EACD,OAAO,EAAE;QACP,aAAa,EAAE,MAAM;QACrB,UAAU,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;KACrB,IACE,cAAc,EACjB,CAAA"}
@@ -1,52 +0,0 @@
1
- import type { StyleRules } from '@material-ui/core/styles'
2
- import { createStyles } from '@material-ui/core/styles'
3
- import { PicassoProvider } from '@toptal/picasso-provider'
4
- import { rem } from '@toptal/picasso-shared'
5
-
6
- import type { ListItemType } from '../List/context'
7
-
8
- PicassoProvider.override(() => ({
9
- MuiListItem: {
10
- root: {
11
- '&$focusVisible': {
12
- backgroundColor: 'unset !important',
13
- },
14
- },
15
- },
16
- }))
17
-
18
- export const listStyleTypes: StyleRules<ListItemType> = {
19
- circle: {
20
- listStyleType: 'circle',
21
- },
22
- disc: {
23
- listStyleType: 'disc',
24
- },
25
- checkmark: {
26
- listStyleType: 'none',
27
- },
28
- arrow: {
29
- listStyleType: 'none',
30
- },
31
- numeral: {
32
- listStyleType: 'decimal',
33
- },
34
- alpha: {
35
- listStyleType: 'lower-alpha',
36
- },
37
- roman: {
38
- listStyleType: 'lower-roman',
39
- },
40
- }
41
-
42
- export default () =>
43
- createStyles({
44
- listContainer: {
45
- marginTop: rem(4),
46
- },
47
- hasIcon: {
48
- listStyleType: 'none',
49
- marginLeft: rem(-22),
50
- },
51
- ...listStyleTypes,
52
- })