@apify/ui-library 1.133.0 → 1.134.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.
- package/dist/src/components/box.d.ts.map +1 -1
- package/dist/src/components/button.js.map +1 -1
- package/dist/src/components/card_container.js.map +1 -1
- package/dist/src/components/chip.d.ts.map +1 -1
- package/dist/src/components/chip.js.map +1 -1
- package/dist/src/components/code/code_block/code_block.d.ts.map +1 -1
- package/dist/src/components/code/code_block/code_block.styled.d.ts.map +1 -1
- package/dist/src/components/code/code_block/code_block.styled.js.map +1 -1
- package/dist/src/components/code/inline_code/inline_code.d.ts.map +1 -1
- package/dist/src/components/code/one_line_code/one_line_code.d.ts.map +1 -1
- package/dist/src/components/code/prism_highlighter.d.ts.map +1 -1
- package/dist/src/components/code/prism_highlighter.js.map +1 -1
- package/dist/src/components/code/prism_python.js +2 -2
- package/dist/src/components/code/prism_python.js.map +1 -1
- package/dist/src/components/floating/tooltip.d.ts.map +1 -1
- package/dist/src/components/floating/tooltip.js +8 -0
- package/dist/src/components/floating/tooltip.js.map +1 -1
- package/dist/src/components/icon_button.d.ts.map +1 -1
- package/dist/src/components/icon_button.js.map +1 -1
- package/dist/src/components/message.d.ts.map +1 -1
- package/dist/src/components/message.js.map +1 -1
- package/dist/src/components/rating.d.ts.map +1 -1
- package/dist/src/components/simple_markdown/simple_markdown.d.ts.map +1 -1
- package/dist/src/components/spinner.d.ts.map +1 -1
- package/dist/src/components/spinner.js.map +1 -1
- package/dist/src/components/store/store_actor_header.d.ts.map +1 -1
- package/dist/src/components/store/store_actor_header.js.map +1 -1
- package/dist/src/components/tag.d.ts.map +1 -1
- package/dist/src/components/to_consolidate/pagination.d.ts.map +1 -1
- package/dist/src/design_system/theme.d.ts.map +1 -1
- package/dist/src/design_system/typography_theme.js +1 -1
- package/dist/src/design_system/typography_theme.js.map +1 -1
- package/dist/src/type_utils.d.ts.map +1 -1
- package/dist/src/ui_dependency_provider.d.ts.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +3 -3
- package/src/codemods/generate_typograpy_tokens_files.mjs +1 -1
- package/src/components/badge.stories.jsx +1 -1
- package/src/components/box.tsx +1 -1
- package/src/components/button.stories.tsx +1 -1
- package/src/components/button.tsx +3 -3
- package/src/components/card_container.tsx +1 -1
- package/src/components/chip.tsx +3 -3
- package/src/components/code/code_block/code_block.styled.tsx +3 -3
- package/src/components/code/code_block/code_block.tsx +3 -3
- package/src/components/code/inline_code/inline_code.tsx +1 -1
- package/src/components/code/one_line_code/one_line_code.tsx +2 -2
- package/src/components/code/prism_highlighter.tsx +1 -1
- package/src/components/code/prism_python.ts +2 -2
- package/src/components/floating/tooltip.tsx +8 -0
- package/src/components/icon_button.stories.tsx +1 -1
- package/src/components/icon_button.tsx +5 -5
- package/src/components/image.tsx +1 -1
- package/src/components/link.stories.tsx +1 -1
- package/src/components/message.tsx +2 -2
- package/src/components/rating.tsx +3 -3
- package/src/components/simple_markdown/simple_markdown.tsx +1 -1
- package/src/components/spinner.tsx +1 -1
- package/src/components/store/store_actor_header.tsx +2 -2
- package/src/components/tabs/tabs.tsx +1 -1
- package/src/components/tag.tsx +1 -1
- package/src/components/to_consolidate/pagination.tsx +1 -1
- package/src/design_system/colors/build_color_tokens.js +1 -0
- package/src/design_system/theme.ts +1 -1
- package/src/design_system/typography_theme.ts +1 -1
- package/src/type_utils.ts +1 -1
- package/src/ui_dependency_provider.tsx +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@apify/ui-library",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.134.1",
|
|
4
4
|
"description": "React UI library used by apify.com",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"It's not nice, but helps us to get around the problem of multiple react instances."
|
|
28
28
|
],
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@apify/ui-icons": "^1.34.
|
|
30
|
+
"@apify/ui-icons": "^1.34.2",
|
|
31
31
|
"@floating-ui/react": "^0.27.19",
|
|
32
32
|
"@radix-ui/react-checkbox": "^1.3.3",
|
|
33
33
|
"@radix-ui/react-collapsible": "^1.1.12",
|
|
@@ -70,5 +70,5 @@
|
|
|
70
70
|
"src",
|
|
71
71
|
"style"
|
|
72
72
|
],
|
|
73
|
-
"gitHead": "
|
|
73
|
+
"gitHead": "1b7093b01669dad875392071d7234b2920fbb073"
|
|
74
74
|
}
|
package/src/components/box.tsx
CHANGED
|
@@ -34,7 +34,7 @@ type SharedBoxProps = {
|
|
|
34
34
|
style?: React.CSSProperties
|
|
35
35
|
onClick?: (e: React.MouseEvent) => void,
|
|
36
36
|
id?: string,
|
|
37
|
-
}
|
|
37
|
+
};
|
|
38
38
|
|
|
39
39
|
// This should be renamed - these props are global for any element not just Boxes
|
|
40
40
|
export type RegularBoxProps = SharedBoxProps & { as?: React.ElementType };
|
|
@@ -236,12 +236,12 @@ export const getButtonColorStyles = (variant: ButtonVariant = 'primary', color:
|
|
|
236
236
|
&:hover {
|
|
237
237
|
color: ${actionTextColor || textColor};
|
|
238
238
|
${hoverGradient
|
|
239
|
-
|
|
239
|
+
? css`
|
|
240
240
|
background-image: ${hoverGradient};
|
|
241
241
|
background-color: ${backgroundColor};
|
|
242
242
|
`
|
|
243
|
-
|
|
244
|
-
}
|
|
243
|
+
: css`background-color: ${hoverColor};`
|
|
244
|
+
}
|
|
245
245
|
border-color: ${actionBorderColor || (hoverGradient ? borderColor : hoverColor)};
|
|
246
246
|
}
|
|
247
247
|
|
|
@@ -16,7 +16,7 @@ const HEADER_PLACEMENT = {
|
|
|
16
16
|
BOTTOM: 'BOTTOM',
|
|
17
17
|
} as const;
|
|
18
18
|
|
|
19
|
-
const Wrapper = styled(Box)<{$headerPlacement: ValueOf<typeof HEADER_PLACEMENT>}>`
|
|
19
|
+
const Wrapper = styled(Box)<{ $headerPlacement: ValueOf<typeof HEADER_PLACEMENT> }>`
|
|
20
20
|
background-color: ${theme.color.neutral.backgroundSubtle};
|
|
21
21
|
border-radius: ${theme.radius.radius12};
|
|
22
22
|
|
package/src/components/chip.tsx
CHANGED
|
@@ -80,7 +80,7 @@ const chipTypeStyle = {
|
|
|
80
80
|
`,
|
|
81
81
|
} satisfies Record<CHIP_TYPES, unknown>;
|
|
82
82
|
|
|
83
|
-
const StyledChip = styled.span<{size: CHIP_SIZES, type: CHIP_TYPES, clickable: boolean}>`
|
|
83
|
+
const StyledChip = styled.span<{ size: CHIP_SIZES, type: CHIP_TYPES, clickable: boolean }>`
|
|
84
84
|
${({ size }) => chipSizeStyle[size]};
|
|
85
85
|
${({ type }) => chipTypeStyle[type]};
|
|
86
86
|
/* Static styles */
|
|
@@ -100,7 +100,7 @@ export type ChipProps = RegularBoxProps & {
|
|
|
100
100
|
size?: CHIP_SIZES
|
|
101
101
|
icon?: React.ReactNode
|
|
102
102
|
clickable?: boolean
|
|
103
|
-
}
|
|
103
|
+
};
|
|
104
104
|
|
|
105
105
|
/**
|
|
106
106
|
* Component for displaying status and for labelling other components.
|
|
@@ -121,7 +121,7 @@ export const Chip = forwardRef(({
|
|
|
121
121
|
|
|
122
122
|
Chip.displayName = 'Chip';
|
|
123
123
|
|
|
124
|
-
type SpecificChipProps = Omit<ChipProps, 'type'
|
|
124
|
+
type SpecificChipProps = Omit<ChipProps, 'type'>;
|
|
125
125
|
|
|
126
126
|
export const PrimaryChip: FC<SpecificChipProps> = (props) => <Chip type={CHIP_TYPES.PRIMARY} {...props} />;
|
|
127
127
|
export const NeutralChip: FC<SpecificChipProps> = (props) => <Chip type={CHIP_TYPES.DEFAULT} {...props} />;
|
|
@@ -8,7 +8,7 @@ export type SyntaxHighlighterBaseStylesWrapperProps = SharedTextProps & {
|
|
|
8
8
|
$fullWidth?: boolean;
|
|
9
9
|
$fullHeight?: string;
|
|
10
10
|
$showLineNumbers?: boolean;
|
|
11
|
-
}
|
|
11
|
+
};
|
|
12
12
|
|
|
13
13
|
export const SyntaxHighlighterBaseStylesWrapper = styled(Box)<SyntaxHighlighterBaseStylesWrapperProps>`
|
|
14
14
|
background-color: ${theme.color.neutral.backgroundMuted} !important;
|
|
@@ -130,10 +130,10 @@ export const CodeBlockWrapper = styled(SyntaxHighlighterBaseStylesWrapper) <{
|
|
|
130
130
|
top: 0;
|
|
131
131
|
right: 0;
|
|
132
132
|
${({ $hasHeader }) => ($hasHeader
|
|
133
|
-
|
|
133
|
+
? css`
|
|
134
134
|
padding-top: 6px;
|
|
135
135
|
padding-right: ${theme.space.space8};`
|
|
136
|
-
|
|
136
|
+
: css`
|
|
137
137
|
padding-top: ${theme.space.space16};
|
|
138
138
|
padding-right: ${theme.space.space16};`)}
|
|
139
139
|
|
|
@@ -21,7 +21,7 @@ type CodeTab = {
|
|
|
21
21
|
language?: string;
|
|
22
22
|
bashCommandsStart?: number[];
|
|
23
23
|
to?: string;
|
|
24
|
-
}
|
|
24
|
+
};
|
|
25
25
|
|
|
26
26
|
type HeaderProps = {
|
|
27
27
|
tabs: CodeTab[] | null;
|
|
@@ -29,7 +29,7 @@ type HeaderProps = {
|
|
|
29
29
|
onTabChange: (tab: CodeTab, e: React.MouseEvent) => void;
|
|
30
30
|
title?: string;
|
|
31
31
|
showBashHeader?: boolean;
|
|
32
|
-
}
|
|
32
|
+
};
|
|
33
33
|
|
|
34
34
|
const LANGUAGES_WITHOUT_LINE_NUMBERS = ['json', 'jsonp', 'jsonp', 'rss', 'yaml', 'xml', 'html', 'bash', 'text', 'dockerfile', 'http'];
|
|
35
35
|
|
|
@@ -111,7 +111,7 @@ export type CodeBlockProps = RegularBoxProps & {
|
|
|
111
111
|
bashCommandsStart?: number[];
|
|
112
112
|
hideBashPromptPrefixes?: boolean;
|
|
113
113
|
hideLineNumbers?: boolean | undefined;
|
|
114
|
-
}
|
|
114
|
+
};
|
|
115
115
|
|
|
116
116
|
export const CodeBlock = ({
|
|
117
117
|
content,
|
|
@@ -51,7 +51,7 @@ type OneLineCodeWrapperProps = SyntaxHighlighterBaseStylesWrapperProps & {
|
|
|
51
51
|
$fitContent?: boolean;
|
|
52
52
|
$showBashPrefixes?: boolean;
|
|
53
53
|
$disabled?: boolean;
|
|
54
|
-
}
|
|
54
|
+
};
|
|
55
55
|
|
|
56
56
|
const OneLineCodeWrapper = styled(SyntaxHighlighterBaseStylesWrapper)<OneLineCodeWrapperProps>`
|
|
57
57
|
display: flex;
|
|
@@ -160,7 +160,7 @@ export type OneLineCodeProps = Omit<BoxProps, 'children'> & {
|
|
|
160
160
|
disabled?: boolean;
|
|
161
161
|
hideCopyButton?: boolean;
|
|
162
162
|
trackingBundle?: OneLineCodeTrackingBundle;
|
|
163
|
-
}
|
|
163
|
+
};
|
|
164
164
|
|
|
165
165
|
export function OneLineCode({
|
|
166
166
|
children,
|
|
@@ -128,7 +128,7 @@ const PreWrapper = styled.pre<PreWrapperProps>`
|
|
|
128
128
|
padding-left: ${({ $hasLinePrefixes }) => ($hasLinePrefixes ? '0.2' : '1')}rem;
|
|
129
129
|
}
|
|
130
130
|
|
|
131
|
-
${({ $isSingleLine }) => !$isSingleLine && css<{$hasLinePrefixes: boolean}>`
|
|
131
|
+
${({ $isSingleLine }) => !$isSingleLine && css<{ $hasLinePrefixes: boolean }>`
|
|
132
132
|
&:hover {
|
|
133
133
|
background-color: ${HIGHLIGHT_BACKGROUND_COLOR} !important;
|
|
134
134
|
border-left: 6px solid ${theme.color.neutral.border} !important;
|
|
@@ -60,9 +60,9 @@ Prism.languages.python = {
|
|
|
60
60
|
punctuation: /\./,
|
|
61
61
|
},
|
|
62
62
|
},
|
|
63
|
-
// eslint-disable-next-line max-len
|
|
63
|
+
// eslint-disable-next-line @stylistic/max-len
|
|
64
64
|
keyword: /\b(?:_(?=\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,
|
|
65
|
-
// eslint-disable-next-line max-len
|
|
65
|
+
// eslint-disable-next-line @stylistic/max-len
|
|
66
66
|
builtin: /\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,
|
|
67
67
|
boolean: /\b(?:False|None|True)\b/,
|
|
68
68
|
number: /\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?(?!\w)/i,
|
|
@@ -52,6 +52,14 @@ const StyledFloatingComponentBase = styled(FloatingComponentBase)<{ $isDarkTheme
|
|
|
52
52
|
background-color: ${theme.colorPalette.dark.neutral900};
|
|
53
53
|
padding: ${theme.space.space8};
|
|
54
54
|
|
|
55
|
+
a {
|
|
56
|
+
color: ${theme.colorPalette.dark.blue100};
|
|
57
|
+
|
|
58
|
+
&:hover {
|
|
59
|
+
color: ${theme.colorPalette.dark.blue75};
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
55
63
|
${({ $isDarkTheme }) => $isDarkTheme && css`
|
|
56
64
|
box-shadow: ${theme.shadow.shadow2};
|
|
57
65
|
border: 1px solid ${theme.color.neutral.smallTooltipBorder};
|
|
@@ -96,7 +96,7 @@ const iconButtonVariantStyle: Record<ICON_BUTTON_VARIANTS, IconButtonVariantStyl
|
|
|
96
96
|
type IconButtonSizeConfig = {
|
|
97
97
|
iconSize: IconSize;
|
|
98
98
|
spinnerSize: string;
|
|
99
|
-
}
|
|
99
|
+
};
|
|
100
100
|
|
|
101
101
|
const iconButtonSizeConfig: Record<ButtonSize, IconButtonSizeConfig> = {
|
|
102
102
|
extraLarge: {
|
|
@@ -142,12 +142,12 @@ const getIconButtonColorStyles = (variant: ICON_BUTTON_VARIANTS) => {
|
|
|
142
142
|
|
|
143
143
|
&:hover {
|
|
144
144
|
${backgroundHoverGradient
|
|
145
|
-
|
|
145
|
+
? css`
|
|
146
146
|
background-image: ${backgroundHoverGradient};
|
|
147
147
|
background-color: ${backgroundColor};
|
|
148
148
|
`
|
|
149
|
-
|
|
150
|
-
}
|
|
149
|
+
: css`background-color: ${backgroundHoverColor};`
|
|
150
|
+
}
|
|
151
151
|
border-color: ${borderHoverColor || borderColor};
|
|
152
152
|
color: ${iconColor};
|
|
153
153
|
}
|
|
@@ -195,7 +195,7 @@ type IconButtonNodePropsMap = {
|
|
|
195
195
|
element: HTMLButtonElement;
|
|
196
196
|
props: RegularButtonProps;
|
|
197
197
|
};
|
|
198
|
-
}
|
|
198
|
+
};
|
|
199
199
|
|
|
200
200
|
export type IconButtonProps<T extends IconButtonNodeType> = RegularBoxProps & Pick<TransientButtonProps, 'size'> & {
|
|
201
201
|
as?: T
|
package/src/components/image.tsx
CHANGED
|
@@ -10,7 +10,7 @@ type ImageProps = {
|
|
|
10
10
|
width?: number,
|
|
11
11
|
height?: number,
|
|
12
12
|
loading?: 'eager' | 'lazy' | undefined;
|
|
13
|
-
} & ImageProxyOptions
|
|
13
|
+
} & ImageProxyOptions;
|
|
14
14
|
|
|
15
15
|
export const Image = forwardRef<HTMLImageElement, ImageProps & Omit<BoxProps, 'as'>>((props, ref) => {
|
|
16
16
|
const { InternalImage } = useSharedUiDependencies();
|
|
@@ -3,7 +3,7 @@ import type { ElementType } from 'react';
|
|
|
3
3
|
|
|
4
4
|
import { Link, type LinkProps } from './link.js';
|
|
5
5
|
|
|
6
|
-
// eslint-disable-next-line max-len
|
|
6
|
+
// eslint-disable-next-line @stylistic/max-len
|
|
7
7
|
const longText = 'This is a very long link text that might wrap to multiple lines depending on the container width. It is used to test how the Link component handles overflow and wrapping in different scenarios.';
|
|
8
8
|
|
|
9
9
|
// Mock the UI dependencies provider for Storybook
|
|
@@ -59,7 +59,7 @@ const StyledMessage = styled(Box)<{ $boxless?: boolean, $hasCaption?: boolean }>
|
|
|
59
59
|
}
|
|
60
60
|
|
|
61
61
|
${({ $hasCaption }) => ($hasCaption
|
|
62
|
-
|
|
62
|
+
? css`
|
|
63
63
|
grid-template-areas:
|
|
64
64
|
'iconArea captionArea'
|
|
65
65
|
'descriptionArea descriptionArea';
|
|
@@ -152,7 +152,7 @@ type MessageProps = BoxProps & {
|
|
|
152
152
|
as?: React.ElementType,
|
|
153
153
|
dismissTrackingId?: string,
|
|
154
154
|
actions?: ActionButtonProps[],
|
|
155
|
-
}
|
|
155
|
+
};
|
|
156
156
|
|
|
157
157
|
/**
|
|
158
158
|
* Component used to display larger messages that are part of the content of the application.
|
|
@@ -13,7 +13,7 @@ import { Text } from './text/index.js';
|
|
|
13
13
|
|
|
14
14
|
type RatingStatsProps = {
|
|
15
15
|
ratingStats: Record<ReviewRating, number>
|
|
16
|
-
}
|
|
16
|
+
};
|
|
17
17
|
|
|
18
18
|
const StyledRating = styled(Box)`
|
|
19
19
|
display: flex;
|
|
@@ -57,7 +57,7 @@ const StyledRatingBar = styled(Box)<{ $widthPercent: number }>`
|
|
|
57
57
|
|
|
58
58
|
type SingleStarRatingProps = BoxProps & {
|
|
59
59
|
color?: string;
|
|
60
|
-
}
|
|
60
|
+
};
|
|
61
61
|
|
|
62
62
|
export const SingleStarRating: FC<SingleStarRatingProps> = ({
|
|
63
63
|
color = theme.color.neutral.icon,
|
|
@@ -74,7 +74,7 @@ export const SingleStarRating: FC<SingleStarRatingProps> = ({
|
|
|
74
74
|
type RatingProps = BoxProps & {
|
|
75
75
|
rating: number | undefined;
|
|
76
76
|
color?: string;
|
|
77
|
-
}
|
|
77
|
+
};
|
|
78
78
|
|
|
79
79
|
export const Rating: FC<RatingProps> = ({
|
|
80
80
|
rating = 0,
|
|
@@ -190,7 +190,7 @@ export type SimpleMarkdownProps = Omit<ReactMarkdownOptions, 'urlTransform' | 'c
|
|
|
190
190
|
size?: MarkdownSize,
|
|
191
191
|
children: string,
|
|
192
192
|
className?: string,
|
|
193
|
-
}
|
|
193
|
+
};
|
|
194
194
|
|
|
195
195
|
export const useDefaultUrlTransform = () => {
|
|
196
196
|
const { windowLocationHost } = useSharedUiDependencies();
|
|
@@ -102,7 +102,7 @@ export const BlockSpinner = styled(Spinner)`
|
|
|
102
102
|
/**
|
|
103
103
|
* Use the inline variant within buttons, texts etc. The color of the spinner is set to current color of text.
|
|
104
104
|
*/
|
|
105
|
-
export const InlineSpinner = styled(Spinner)<{size?: string}>`
|
|
105
|
+
export const InlineSpinner = styled(Spinner)<{ size?: string }>`
|
|
106
106
|
display: inline-block;
|
|
107
107
|
position: relative;
|
|
108
108
|
height: ${({ size }) => size || theme.space.space12};
|
|
@@ -12,7 +12,7 @@ const storeActorHeaderClassNames = {
|
|
|
12
12
|
badge: 'ActorStoreItem-badge',
|
|
13
13
|
};
|
|
14
14
|
|
|
15
|
-
const StyledStoreActorHeader = styled(Box)<{ $compact: boolean}>`
|
|
15
|
+
const StyledStoreActorHeader = styled(Box)<{ $compact: boolean }>`
|
|
16
16
|
display: flex;
|
|
17
17
|
gap: ${({ $compact }) => ($compact ? theme.space.space4 : theme.space.space12)};
|
|
18
18
|
align-items: ${({ $compact }) => ($compact ? 'flex-start' : 'center')};
|
|
@@ -79,7 +79,7 @@ export type StoreActorHeaderProps = {
|
|
|
79
79
|
hasRisingStarBadge?: boolean,
|
|
80
80
|
avatarSize?: number,
|
|
81
81
|
compact?: boolean;
|
|
82
|
-
}
|
|
82
|
+
};
|
|
83
83
|
|
|
84
84
|
export const StoreActorHeader: React.FC<StoreActorHeaderProps & BoxProps> = ({
|
|
85
85
|
name,
|
|
@@ -128,7 +128,7 @@ const TabsWrapper = styled(Box)<TabsWrapperProps>`
|
|
|
128
128
|
type TabOverflowState = {
|
|
129
129
|
right: boolean;
|
|
130
130
|
left: boolean;
|
|
131
|
-
}
|
|
131
|
+
};
|
|
132
132
|
|
|
133
133
|
const isTabsOverflowing = (node: HTMLDivElement): TabOverflowState => {
|
|
134
134
|
if (node.scrollWidth > node.clientWidth) {
|
package/src/components/tag.tsx
CHANGED
package/src/type_utils.ts
CHANGED
|
@@ -3,5 +3,5 @@
|
|
|
3
3
|
// It's called transient props (https://styled-components.com/docs/api#transient-props)
|
|
4
4
|
export type WithTransientProps<T> = { [P in keyof T & string as `$${P}`]: T[P] };
|
|
5
5
|
|
|
6
|
-
export type WithRequired<T, K extends keyof T> = T & Required<Pick<T, K
|
|
6
|
+
export type WithRequired<T, K extends keyof T> = T & Required<Pick<T, K>>;
|
|
7
7
|
export type WithOptional<T, K extends keyof T> = Pick<Partial<T>, K> & Omit<T, K>;
|