@via-profit/ui-kit 0.9.1 → 0.10.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.
- package/Badge/BadgeContainer.js +1 -1
- package/Badge/BadgeTextWrapper.js +3 -1
- package/Button/buttonVariants.d.ts +1 -1
- package/Button/buttonVariants.js +57 -8
- package/Button/index.d.ts +4 -4
- package/CHANGELOG.md +21 -0
- package/Calendar/CalendarControlButton.d.ts +1 -1
- package/Calendar/CalendarWeekDayLabel.js +1 -1
- package/Menu/MenuContainer.d.ts +26 -0
- package/Menu/MenuContainer.js +40 -17
- package/Menu/MenuList.d.ts +4 -0
- package/Menu/MenuList.js +3 -3
- package/Menu/MenuSeparator.d.ts +8 -0
- package/Menu/MenuSeparator.js +29 -0
- package/Menu/index.d.ts +1 -0
- package/Menu/index.js +1 -0
- package/Modal/BaseModal/ModalInner.js +2 -1
- package/Pagination/PaginationItem.d.ts +1 -1
- package/Stepper/Step.d.ts +51 -0
- package/Stepper/Step.js +169 -0
- package/Stepper/Stepper.d.ts +49 -0
- package/Stepper/Stepper.js +74 -0
- package/Stepper/context.d.ts +21 -0
- package/Stepper/context.js +12 -0
- package/Stepper/index.d.ts +6 -0
- package/Stepper/index.js +10 -0
- package/Surface/SurfaceSubheader.js +4 -3
- package/Tabs/Tab.d.ts +8 -0
- package/Tabs/Tab.js +75 -32
- package/Tabs/TabList.js +24 -5
- package/Tabs/Tabs.d.ts +25 -1
- package/Tabs/Tabs.js +5 -1
- package/Tabs/context.d.ts +18 -0
- package/Tabs/context.js +9 -1
- package/Tabs/index.d.ts +1 -1
- package/ThemeProvider/index.d.ts +6 -1
- package/ThemeProvider/tokens.js +1 -0
- package/esm/Badge/BadgeContainer.js +1 -1
- package/esm/Badge/BadgeTextWrapper.js +3 -1
- package/esm/Button/buttonVariants.js +57 -8
- package/esm/Calendar/CalendarWeekDayLabel.js +1 -1
- package/esm/Menu/MenuContainer.js +40 -17
- package/esm/Menu/MenuList.js +3 -3
- package/esm/Menu/MenuSeparator.js +23 -0
- package/esm/Menu/index.js +1 -0
- package/esm/Modal/BaseModal/ModalInner.js +2 -1
- package/esm/Stepper/Step.js +164 -0
- package/esm/Stepper/Stepper.js +69 -0
- package/esm/Stepper/context.js +6 -0
- package/esm/Stepper/index.js +3 -0
- package/esm/Surface/SurfaceSubheader.js +4 -3
- package/esm/Tabs/Tab.js +77 -34
- package/esm/Tabs/TabList.js +24 -5
- package/esm/Tabs/Tabs.js +5 -1
- package/esm/Tabs/context.js +8 -0
- package/esm/ThemeProvider/tokens.js +1 -0
- package/package.json +31 -1
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
2
|
+
var t = {};
|
|
3
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
4
|
+
t[p] = s[p];
|
|
5
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
6
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
7
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
8
|
+
t[p[i]] = s[p[i]];
|
|
9
|
+
}
|
|
10
|
+
return t;
|
|
11
|
+
};
|
|
12
|
+
import React from 'react';
|
|
13
|
+
import styled from '@emotion/styled';
|
|
14
|
+
import { css, useTheme } from '@emotion/react';
|
|
15
|
+
import Color from '../Color';
|
|
16
|
+
import { StepIndexContext, StepperContext } from './context';
|
|
17
|
+
const StyledStepper = styled.div `
|
|
18
|
+
display: flex;
|
|
19
|
+
${({ $orientation, $alternativeLabel }) => $orientation === 'vertical'
|
|
20
|
+
? css `
|
|
21
|
+
flex-direction: column;
|
|
22
|
+
`
|
|
23
|
+
: css `
|
|
24
|
+
flex-direction: row;
|
|
25
|
+
align-items: ${$alternativeLabel ? 'flex-start' : 'center'};
|
|
26
|
+
`}
|
|
27
|
+
`;
|
|
28
|
+
/**
|
|
29
|
+
* The steps of a process: done, the current one, ahead. Children — the `<Step>` elements
|
|
30
|
+
*/
|
|
31
|
+
const Stepper = (props, ref) => {
|
|
32
|
+
const { activeStep = 0, orientation = 'horizontal', alternativeLabel = false, color = 'primary', children } = props, nativeProps = __rest(props, ["activeStep", "orientation", "alternativeLabel", "color", "children"]);
|
|
33
|
+
const theme = useTheme();
|
|
34
|
+
const [resolvedColor, contrastColor] = React.useMemo(() => {
|
|
35
|
+
if (color === 'primary') {
|
|
36
|
+
return [theme.color.accentPrimary, theme.color.accentPrimaryContrast];
|
|
37
|
+
}
|
|
38
|
+
if (color === 'secondary') {
|
|
39
|
+
return [theme.color.accentSecondary, theme.color.accentSecondaryContrast];
|
|
40
|
+
}
|
|
41
|
+
try {
|
|
42
|
+
const own = Color.fromString(color);
|
|
43
|
+
return [own, own.getContrastColor()];
|
|
44
|
+
}
|
|
45
|
+
catch (_a) {
|
|
46
|
+
return [theme.color.accentPrimary, theme.color.accentPrimaryContrast];
|
|
47
|
+
}
|
|
48
|
+
}, [
|
|
49
|
+
color,
|
|
50
|
+
theme.color.accentPrimary,
|
|
51
|
+
theme.color.accentPrimaryContrast,
|
|
52
|
+
theme.color.accentSecondary,
|
|
53
|
+
theme.color.accentSecondaryContrast,
|
|
54
|
+
]);
|
|
55
|
+
const context = React.useMemo(() => ({
|
|
56
|
+
activeStep,
|
|
57
|
+
orientation,
|
|
58
|
+
alternativeLabel: orientation === 'horizontal' && alternativeLabel,
|
|
59
|
+
color: resolvedColor,
|
|
60
|
+
contrastColor,
|
|
61
|
+
}), [activeStep, orientation, alternativeLabel, resolvedColor, contrastColor]);
|
|
62
|
+
const steps = React.Children.toArray(children).filter(React.isValidElement);
|
|
63
|
+
return (React.createElement(StepperContext.Provider, { value: context },
|
|
64
|
+
React.createElement(StyledStepper, Object.assign({ role: "list", "aria-orientation": orientation }, nativeProps, { "$orientation": orientation, "$alternativeLabel": context.alternativeLabel, ref: ref }), steps.map((step, index) => {
|
|
65
|
+
var _a;
|
|
66
|
+
return (React.createElement(StepIndexContext.Provider, { key: (_a = step.key) !== null && _a !== void 0 ? _a : index, value: { index, last: index === steps.length - 1 } }, step));
|
|
67
|
+
}))));
|
|
68
|
+
};
|
|
69
|
+
export default React.forwardRef(Stepper);
|
|
@@ -14,11 +14,12 @@ import styled from '@emotion/styled';
|
|
|
14
14
|
import { themePadding } from '../ThemeProvider/tokens';
|
|
15
15
|
const StyledHeader = styled.div `
|
|
16
16
|
padding: ${({ $noPadding, theme }) => {
|
|
17
|
-
const { y, x } = themePadding(theme, 'container'
|
|
17
|
+
const { y, x } = themePadding(theme, 'container');
|
|
18
18
|
return $noPadding ? '0' : `calc(${y} / 2) ${x} 0 ${x}`;
|
|
19
19
|
}};
|
|
20
|
-
|
|
21
|
-
font-
|
|
20
|
+
/* the size of the text, the secondary color and Light: quieter than the text, but not small */
|
|
21
|
+
font-size: 1em;
|
|
22
|
+
font-weight: 300;
|
|
22
23
|
color: ${({ theme }) => theme.color.textSecondary.toString()};
|
|
23
24
|
`;
|
|
24
25
|
const SurfaceSubheader = (props, ref) => {
|
package/esm/Tabs/Tab.js
CHANGED
|
@@ -12,10 +12,70 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
12
12
|
import React from 'react';
|
|
13
13
|
import styled from '@emotion/styled';
|
|
14
14
|
import { css } from '@emotion/react';
|
|
15
|
-
import
|
|
16
|
-
import {
|
|
15
|
+
import Badge from '../Badge';
|
|
16
|
+
import { TAB_SIZES, useTabsContext } from './context';
|
|
17
|
+
import { themeFocusRing } from '../ThemeProvider/tokens';
|
|
18
|
+
const underlineStyles = ({ theme, $color, $selected, $orientation, }) => $orientation === 'vertical'
|
|
19
|
+
? css `
|
|
20
|
+
/* The indicator of the selected tab on the right edge of the list */
|
|
21
|
+
&::after {
|
|
22
|
+
content: '';
|
|
23
|
+
position: absolute;
|
|
24
|
+
top: 0.3em;
|
|
25
|
+
bottom: 0.3em;
|
|
26
|
+
right: -1px;
|
|
27
|
+
width: 2px;
|
|
28
|
+
border-radius: 2px;
|
|
29
|
+
background-color: ${$color.toString()};
|
|
30
|
+
transform: scaleY(${$selected ? 1 : 0});
|
|
31
|
+
transition: transform 200ms cubic-bezier(0.4, 0, 0.2, 1);
|
|
32
|
+
}
|
|
33
|
+
&:hover:not(:disabled) {
|
|
34
|
+
background-color: ${theme.color.textPrimary.alpha(0.05).toString()};
|
|
35
|
+
}
|
|
36
|
+
`
|
|
37
|
+
: css `
|
|
38
|
+
/* The hover is the rounded background over the line, the line is under the text only */
|
|
39
|
+
&::before {
|
|
40
|
+
content: '';
|
|
41
|
+
position: absolute;
|
|
42
|
+
inset: 0.2em 0 0.3em 0;
|
|
43
|
+
z-index: -1;
|
|
44
|
+
border-radius: inherit;
|
|
45
|
+
transition: background-color 150ms ease-out;
|
|
46
|
+
}
|
|
47
|
+
&:hover:not(:disabled)::before {
|
|
48
|
+
background-color: ${theme.color.textPrimary.alpha(0.05).toString()};
|
|
49
|
+
}
|
|
50
|
+
&::after {
|
|
51
|
+
content: '';
|
|
52
|
+
position: absolute;
|
|
53
|
+
left: var(--tab-x);
|
|
54
|
+
right: var(--tab-x);
|
|
55
|
+
bottom: 0;
|
|
56
|
+
height: 2px;
|
|
57
|
+
border-radius: 2px;
|
|
58
|
+
background-color: ${$color.toString()};
|
|
59
|
+
transform: scaleX(${$selected ? 1 : 0});
|
|
60
|
+
transition: transform 200ms cubic-bezier(0.4, 0, 0.2, 1);
|
|
61
|
+
}
|
|
62
|
+
`;
|
|
63
|
+
const segmentedStyles = ({ theme, $color, $selected }) => css `
|
|
64
|
+
&:hover:not(:disabled) {
|
|
65
|
+
background-color: ${$selected
|
|
66
|
+
? $color.alpha(0.2).toString()
|
|
67
|
+
: theme.color.textPrimary.alpha(0.05).toString()};
|
|
68
|
+
}
|
|
69
|
+
${$selected &&
|
|
70
|
+
css `
|
|
71
|
+
background-color: ${$color.alpha(0.14).toString()};
|
|
72
|
+
`}
|
|
73
|
+
`;
|
|
17
74
|
const StyledTab = styled.button `
|
|
75
|
+
--tab-x: ${({ $size }) => TAB_SIZES[$size].x};
|
|
18
76
|
position: relative;
|
|
77
|
+
/* The own stacking context: the hover background lies under the text, over the panel */
|
|
78
|
+
isolation: isolate;
|
|
19
79
|
display: inline-flex;
|
|
20
80
|
align-items: center;
|
|
21
81
|
justify-content: center;
|
|
@@ -23,18 +83,17 @@ const StyledTab = styled.button `
|
|
|
23
83
|
flex-shrink: 0;
|
|
24
84
|
box-sizing: border-box;
|
|
25
85
|
margin: 0;
|
|
26
|
-
padding: ${({
|
|
27
|
-
const { y, x } = themePadding(theme, 'item');
|
|
28
|
-
return `${y} ${x}`;
|
|
29
|
-
}};
|
|
86
|
+
padding: ${({ $size }) => `${TAB_SIZES[$size].y} var(--tab-x)`};
|
|
30
87
|
border: 0;
|
|
88
|
+
border-radius: ${({ theme }) => theme.shape.radiusFactor * 2}em;
|
|
31
89
|
background: none;
|
|
32
90
|
font: inherit;
|
|
33
|
-
font-size:
|
|
34
|
-
|
|
91
|
+
font-size: ${({ $size }) => TAB_SIZES[$size].fontSize};
|
|
92
|
+
/* light: the tabs are the navigation, not the headings */
|
|
93
|
+
font-weight: ${({ $selected }) => ($selected ? 500 : 400)};
|
|
35
94
|
white-space: nowrap;
|
|
36
95
|
cursor: pointer;
|
|
37
|
-
color: ${({ theme, $color, $selected }) => $selected ? $color.toString() : theme.color.textSecondary.toString()};
|
|
96
|
+
color: ${({ theme, $color, $selected }) => $selected ? $color.darken(20).toString() : theme.color.textSecondary.toString()};
|
|
38
97
|
transition:
|
|
39
98
|
color 150ms ease-out,
|
|
40
99
|
background-color 150ms ease-out;
|
|
@@ -49,7 +108,7 @@ const StyledTab = styled.button `
|
|
|
49
108
|
`}
|
|
50
109
|
|
|
51
110
|
&:hover:not(:disabled) {
|
|
52
|
-
|
|
111
|
+
color: ${({ theme, $color, $selected }) => $selected ? $color.darken(20).toString() : theme.color.textPrimary.toString()};
|
|
53
112
|
}
|
|
54
113
|
|
|
55
114
|
&:focus-visible {
|
|
@@ -62,31 +121,11 @@ const StyledTab = styled.button `
|
|
|
62
121
|
opacity: 0.45;
|
|
63
122
|
}
|
|
64
123
|
|
|
65
|
-
|
|
66
|
-
&::after {
|
|
67
|
-
content: '';
|
|
68
|
-
position: absolute;
|
|
69
|
-
background-color: ${({ $color }) => $color.toString()};
|
|
70
|
-
transition: transform 200ms cubic-bezier(0.4, 0, 0.2, 1);
|
|
71
|
-
${({ $orientation, $selected }) => $orientation === 'vertical'
|
|
72
|
-
? css `
|
|
73
|
-
top: 0;
|
|
74
|
-
bottom: 0;
|
|
75
|
-
right: -1px;
|
|
76
|
-
width: 2px;
|
|
77
|
-
transform: scaleY(${$selected ? 1 : 0});
|
|
78
|
-
`
|
|
79
|
-
: css `
|
|
80
|
-
left: 0;
|
|
81
|
-
right: 0;
|
|
82
|
-
bottom: 0;
|
|
83
|
-
height: 2px;
|
|
84
|
-
transform: scaleX(${$selected ? 1 : 0});
|
|
85
|
-
`}
|
|
86
|
-
}
|
|
124
|
+
${props => (props.$variant === 'segmented' ? segmentedStyles(props) : underlineStyles(props))}
|
|
87
125
|
|
|
88
126
|
@media (prefers-reduced-motion: reduce) {
|
|
89
127
|
&,
|
|
128
|
+
&::before,
|
|
90
129
|
&::after {
|
|
91
130
|
transition: none;
|
|
92
131
|
}
|
|
@@ -94,7 +133,7 @@ const StyledTab = styled.button `
|
|
|
94
133
|
${({ theme }) => themeFocusRing(theme)}
|
|
95
134
|
`;
|
|
96
135
|
const Tab = (props, ref) => {
|
|
97
|
-
const { value, children, onClick, disabled } = props, nativeProps = __rest(props, ["value", "children", "onClick", "disabled"]);
|
|
136
|
+
const { value, counter, children, onClick, disabled } = props, nativeProps = __rest(props, ["value", "counter", "children", "onClick", "disabled"]);
|
|
98
137
|
const context = useTabsContext('Tab');
|
|
99
138
|
const isSelected = context.value === value;
|
|
100
139
|
const tabRef = React.useRef(null);
|
|
@@ -121,6 +160,10 @@ const Tab = (props, ref) => {
|
|
|
121
160
|
context.select(value, event);
|
|
122
161
|
}
|
|
123
162
|
};
|
|
124
|
-
return (React.createElement(StyledTab, Object.assign({ type: "button", role: "tab", id: context.getTabId(value), "aria-controls": context.getPanelId(value), "aria-selected": isSelected, tabIndex: isSelected ? 0 : -1, "data-tab-value": value }, nativeProps, { disabled: disabled, onClick: handleClick, "$color": context.color, "$selected": isSelected, "$orientation": context.orientation, "$fullWidth": context.fullWidth, ref: tabRef }),
|
|
163
|
+
return (React.createElement(StyledTab, Object.assign({ type: "button", role: "tab", id: context.getTabId(value), "aria-controls": context.getPanelId(value), "aria-selected": isSelected, tabIndex: isSelected ? 0 : -1, "data-tab-value": value }, nativeProps, { disabled: disabled, onClick: handleClick, "$color": context.color, "$selected": isSelected, "$orientation": context.orientation, "$variant": context.variant, "$size": context.size, "$fullWidth": context.fullWidth, ref: tabRef }),
|
|
164
|
+
children,
|
|
165
|
+
typeof counter === 'number' && (
|
|
166
|
+
// soft: the pale background of the color — the counter does not argue with the label
|
|
167
|
+
React.createElement(Badge, { variant: "soft", color: counter > 0 ? context.color.toString() : 'default' }, String(counter)))));
|
|
125
168
|
};
|
|
126
169
|
export default React.forwardRef(Tab);
|
package/esm/Tabs/TabList.js
CHANGED
|
@@ -16,27 +16,46 @@ import { useTabsContext } from './context';
|
|
|
16
16
|
const StyledList = styled.div `
|
|
17
17
|
display: flex;
|
|
18
18
|
box-sizing: border-box;
|
|
19
|
-
|
|
19
|
+
gap: 0.25em;
|
|
20
|
+
${({ $orientation }) => $orientation === 'vertical'
|
|
20
21
|
? css `
|
|
21
22
|
flex-direction: column;
|
|
22
23
|
flex-shrink: 0;
|
|
23
|
-
border-right: 1px solid ${theme.color.textPrimary.alpha(0.12).toString()};
|
|
24
24
|
`
|
|
25
25
|
: css `
|
|
26
26
|
flex-direction: row;
|
|
27
27
|
/* Many tabs on the narrow screen scroll instead of breaking the layout */
|
|
28
28
|
overflow-x: auto;
|
|
29
29
|
scrollbar-width: none;
|
|
30
|
-
border-bottom: 1px solid ${theme.color.textPrimary.alpha(0.12).toString()};
|
|
31
30
|
&::-webkit-scrollbar {
|
|
32
31
|
display: none;
|
|
33
32
|
}
|
|
34
33
|
`}
|
|
34
|
+
${({ theme, $orientation, $variant }) => $variant === 'segmented'
|
|
35
|
+
? css `
|
|
36
|
+
/* The tray: the tabs lie in the pale rounded plate */
|
|
37
|
+
${$orientation === 'horizontal' &&
|
|
38
|
+
css `
|
|
39
|
+
align-self: flex-start;
|
|
40
|
+
display: inline-flex;
|
|
41
|
+
max-width: 100%;
|
|
42
|
+
`}
|
|
43
|
+
padding: 0.25em;
|
|
44
|
+
border-radius: ${theme.shape.radiusFactor * 2.5}em;
|
|
45
|
+
background-color: ${theme.color.textPrimary.alpha(0.05).toString()};
|
|
46
|
+
`
|
|
47
|
+
: $orientation === 'vertical'
|
|
48
|
+
? css `
|
|
49
|
+
border-right: 1px solid ${theme.color.textPrimary.alpha(0.1).toString()};
|
|
50
|
+
`
|
|
51
|
+
: css `
|
|
52
|
+
border-bottom: 1px solid ${theme.color.textPrimary.alpha(0.1).toString()};
|
|
53
|
+
`}
|
|
35
54
|
`;
|
|
36
55
|
const getEnabledTabs = (list) => Array.from(list.querySelectorAll('[role="tab"]')).filter(tab => tab.closest('[role="tablist"]') === list && !tab.hasAttribute('disabled'));
|
|
37
56
|
const TabList = (props, ref) => {
|
|
38
57
|
const { children, onKeyDown } = props, nativeProps = __rest(props, ["children", "onKeyDown"]);
|
|
39
|
-
const { orientation, activation, value, isUncontrolledEmpty, selectInitial } = useTabsContext('TabList');
|
|
58
|
+
const { orientation, variant, activation, value, isUncontrolledEmpty, selectInitial } = useTabsContext('TabList');
|
|
40
59
|
const listRef = React.useRef(null);
|
|
41
60
|
React.useImperativeHandle(ref, () => listRef.current);
|
|
42
61
|
// The tab order needs one focusable tab. Normally it is the selected one,
|
|
@@ -94,6 +113,6 @@ const TabList = (props, ref) => {
|
|
|
94
113
|
target.click();
|
|
95
114
|
}
|
|
96
115
|
};
|
|
97
|
-
return (React.createElement(StyledList, Object.assign({ role: "tablist", "aria-orientation": orientation }, nativeProps, { onKeyDown: handleKeyDown, "$orientation": orientation, ref: listRef }), children));
|
|
116
|
+
return (React.createElement(StyledList, Object.assign({ role: "tablist", "aria-orientation": orientation }, nativeProps, { onKeyDown: handleKeyDown, "$orientation": orientation, "$variant": variant, ref: listRef }), children));
|
|
98
117
|
};
|
|
99
118
|
export default React.forwardRef(TabList);
|
package/esm/Tabs/Tabs.js
CHANGED
|
@@ -22,7 +22,7 @@ const StyledTabs = styled.div `
|
|
|
22
22
|
*/
|
|
23
23
|
const escapeId = (value) => value.replace(/[^\w-]/g, char => `_${char.charCodeAt(0).toString(16)}`);
|
|
24
24
|
const Tabs = (props, ref) => {
|
|
25
|
-
const { value, defaultValue, onChange, orientation = 'horizontal', activation = 'auto', fullWidth = false, color, children } = props, nativeProps = __rest(props, ["value", "defaultValue", "onChange", "orientation", "activation", "fullWidth", "color", "children"]);
|
|
25
|
+
const { value, defaultValue, onChange, orientation = 'horizontal', activation = 'auto', fullWidth = false, variant = 'underline', size = 'm', color, children } = props, nativeProps = __rest(props, ["value", "defaultValue", "onChange", "orientation", "activation", "fullWidth", "variant", "size", "color", "children"]);
|
|
26
26
|
const isControlled = typeof value !== 'undefined';
|
|
27
27
|
const [internalValue, setInternalValue] = React.useState(defaultValue !== null && defaultValue !== void 0 ? defaultValue : null);
|
|
28
28
|
const currentValue = isControlled ? value : internalValue;
|
|
@@ -55,6 +55,8 @@ const Tabs = (props, ref) => {
|
|
|
55
55
|
orientation,
|
|
56
56
|
activation,
|
|
57
57
|
fullWidth,
|
|
58
|
+
variant,
|
|
59
|
+
size,
|
|
58
60
|
color: $color,
|
|
59
61
|
getTabId: tabValue => `${baseId}-tab-${escapeId(tabValue)}`,
|
|
60
62
|
getPanelId: tabValue => `${baseId}-panel-${escapeId(tabValue)}`,
|
|
@@ -66,6 +68,8 @@ const Tabs = (props, ref) => {
|
|
|
66
68
|
orientation,
|
|
67
69
|
activation,
|
|
68
70
|
fullWidth,
|
|
71
|
+
variant,
|
|
72
|
+
size,
|
|
69
73
|
$color,
|
|
70
74
|
baseId,
|
|
71
75
|
]);
|
package/esm/Tabs/context.js
CHANGED
|
@@ -1,4 +1,12 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* The size of the text and the paddings of the tab, in the `em` of the tabs
|
|
4
|
+
*/
|
|
5
|
+
export const TAB_SIZES = {
|
|
6
|
+
s: { fontSize: '0.857em', y: '0.5em', x: '0.7em' },
|
|
7
|
+
m: { fontSize: '0.929em', y: '0.75em', x: '0.9em' },
|
|
8
|
+
l: { fontSize: '1em', y: '1em', x: '1.05em' },
|
|
9
|
+
};
|
|
2
10
|
export const TabsContext = React.createContext(null);
|
|
3
11
|
export const useTabsContext = (component) => {
|
|
4
12
|
const context = React.useContext(TabsContext);
|
|
@@ -26,6 +26,7 @@ export const themeFocusRing = (theme, selector = '&:focus-visible') => {
|
|
|
26
26
|
*/
|
|
27
27
|
export const defaultElevation = (theme) => ({
|
|
28
28
|
popup: `0 8px 24px ${theme.color.surface.darken(50).alpha(0.6).toString()}`,
|
|
29
|
+
modal: `0 16px 48px -12px ${theme.color.surface.darken(100).alpha(0.5).toString()}`,
|
|
29
30
|
surface: `0 8px 32px -13px ${theme.color.surface.darken(100).alpha(0.4).toString()}`,
|
|
30
31
|
control: `0 1px 3px ${theme.color.surface.darken(100).alpha(0.35).toString()}`,
|
|
31
32
|
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@via-profit/ui-kit",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.10.0",
|
|
4
4
|
"description": "UI Kit",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -735,6 +735,11 @@
|
|
|
735
735
|
"import": "./esm/Menu/MenuList.js",
|
|
736
736
|
"require": "./Menu/MenuList.js"
|
|
737
737
|
},
|
|
738
|
+
"./Menu/MenuSeparator": {
|
|
739
|
+
"types": "./Menu/MenuSeparator.d.ts",
|
|
740
|
+
"import": "./esm/Menu/MenuSeparator.js",
|
|
741
|
+
"require": "./Menu/MenuSeparator.js"
|
|
742
|
+
},
|
|
738
743
|
"./Menu/context": {
|
|
739
744
|
"types": "./Menu/context.d.ts",
|
|
740
745
|
"import": "./esm/Menu/context.js",
|
|
@@ -1255,6 +1260,31 @@
|
|
|
1255
1260
|
"import": "./esm/Stack/index.js",
|
|
1256
1261
|
"require": "./Stack/index.js"
|
|
1257
1262
|
},
|
|
1263
|
+
"./Stepper/Step": {
|
|
1264
|
+
"types": "./Stepper/Step.d.ts",
|
|
1265
|
+
"import": "./esm/Stepper/Step.js",
|
|
1266
|
+
"require": "./Stepper/Step.js"
|
|
1267
|
+
},
|
|
1268
|
+
"./Stepper/Stepper": {
|
|
1269
|
+
"types": "./Stepper/Stepper.d.ts",
|
|
1270
|
+
"import": "./esm/Stepper/Stepper.js",
|
|
1271
|
+
"require": "./Stepper/Stepper.js"
|
|
1272
|
+
},
|
|
1273
|
+
"./Stepper/context": {
|
|
1274
|
+
"types": "./Stepper/context.d.ts",
|
|
1275
|
+
"import": "./esm/Stepper/context.js",
|
|
1276
|
+
"require": "./Stepper/context.js"
|
|
1277
|
+
},
|
|
1278
|
+
"./Stepper/index": {
|
|
1279
|
+
"types": "./Stepper/index.d.ts",
|
|
1280
|
+
"import": "./esm/Stepper/index.js",
|
|
1281
|
+
"require": "./Stepper/index.js"
|
|
1282
|
+
},
|
|
1283
|
+
"./Stepper": {
|
|
1284
|
+
"types": "./Stepper/index.d.ts",
|
|
1285
|
+
"import": "./esm/Stepper/index.js",
|
|
1286
|
+
"require": "./Stepper/index.js"
|
|
1287
|
+
},
|
|
1258
1288
|
"./Surface/SurfaceContainer": {
|
|
1259
1289
|
"types": "./Surface/SurfaceContainer.d.ts",
|
|
1260
1290
|
"import": "./esm/Surface/SurfaceContainer.js",
|