@zendeskgarden/react-forms 9.0.0-next.6 → 9.0.0-next.8
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/esm/elements/Checkbox.js +97 -0
- package/dist/esm/elements/FileUpload.js +75 -0
- package/dist/esm/elements/Input.js +93 -0
- package/dist/esm/elements/MediaInput.js +156 -0
- package/dist/esm/elements/Radio.js +81 -0
- package/dist/esm/elements/Range.js +108 -0
- package/dist/esm/elements/Select.js +97 -0
- package/dist/esm/elements/Textarea.js +170 -0
- package/dist/esm/elements/Toggle.js +81 -0
- package/dist/esm/elements/common/Field.js +97 -0
- package/dist/esm/elements/common/Fieldset.js +73 -0
- package/dist/esm/elements/common/Hint.js +92 -0
- package/dist/esm/elements/common/Label.js +134 -0
- package/dist/esm/elements/common/Legend.js +63 -0
- package/dist/esm/elements/common/Message.js +113 -0
- package/dist/esm/elements/faux-input/FauxInput.js +100 -0
- package/dist/esm/elements/faux-input/components/EndIcon.js +59 -0
- package/dist/esm/elements/faux-input/components/StartIcon.js +59 -0
- package/dist/esm/elements/file-list/FileList.js +66 -0
- package/dist/esm/elements/file-list/components/Close.js +75 -0
- package/dist/esm/elements/file-list/components/Delete.js +75 -0
- package/dist/esm/elements/file-list/components/File.js +94 -0
- package/dist/esm/elements/file-list/components/Item.js +64 -0
- package/dist/esm/elements/file-list/utils.js +50 -0
- package/dist/esm/elements/input-group/InputGroup.js +75 -0
- package/dist/esm/elements/tiles/Tiles.js +64 -0
- package/dist/esm/elements/tiles/components/Description.js +64 -0
- package/dist/esm/elements/tiles/components/Icon.js +64 -0
- package/dist/esm/elements/tiles/components/Label.js +73 -0
- package/dist/esm/elements/tiles/components/Tile.js +91 -0
- package/dist/esm/index.js +26 -0
- package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/12/check-circle-stroke.svg.js +33 -0
- package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/12/check-sm-fill.svg.js +29 -0
- package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/12/circle-sm-fill.svg.js +27 -0
- package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/12/dash-fill.svg.js +27 -0
- package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/12/file-document-stroke.svg.js +27 -0
- package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/12/file-error-stroke.svg.js +27 -0
- package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/12/file-generic-stroke.svg.js +26 -0
- package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/12/file-image-stroke.svg.js +33 -0
- package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/12/file-pdf-stroke.svg.js +35 -0
- package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/12/file-presentation-stroke.svg.js +26 -0
- package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/12/file-spreadsheet-stroke.svg.js +27 -0
- package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/12/file-zip-stroke.svg.js +27 -0
- package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/12/trash-stroke.svg.js +27 -0
- package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/12/x-stroke.svg.js +26 -0
- package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/16/alert-error-stroke.svg.js +37 -0
- package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/16/alert-warning-stroke.svg.js +32 -0
- package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/16/check-circle-stroke.svg.js +33 -0
- package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/16/chevron-down-stroke.svg.js +25 -0
- package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/16/circle-sm-fill.svg.js +27 -0
- package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/16/file-document-stroke.svg.js +27 -0
- package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/16/file-error-stroke.svg.js +27 -0
- package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/16/file-generic-stroke.svg.js +26 -0
- package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/16/file-image-stroke.svg.js +32 -0
- package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/16/file-pdf-stroke.svg.js +35 -0
- package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/16/file-presentation-stroke.svg.js +26 -0
- package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/16/file-spreadsheet-stroke.svg.js +27 -0
- package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/16/file-zip-stroke.svg.js +27 -0
- package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/16/trash-stroke.svg.js +27 -0
- package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/16/x-stroke.svg.js +26 -0
- package/dist/esm/styled/checkbox/StyledCheckHint.js +23 -0
- package/dist/esm/styled/checkbox/StyledCheckInput.js +34 -0
- package/dist/esm/styled/checkbox/StyledCheckLabel.js +23 -0
- package/dist/esm/styled/checkbox/StyledCheckMessage.js +23 -0
- package/dist/esm/styled/checkbox/StyledCheckSvg.js +25 -0
- package/dist/esm/styled/checkbox/StyledDashSvg.js +25 -0
- package/dist/esm/styled/common/StyledField.js +22 -0
- package/dist/esm/styled/common/StyledFieldset.js +24 -0
- package/dist/esm/styled/common/StyledHint.js +22 -0
- package/dist/esm/styled/common/StyledLabel.js +23 -0
- package/dist/esm/styled/common/StyledLegend.js +24 -0
- package/dist/esm/styled/common/StyledMessage.js +40 -0
- package/dist/esm/styled/common/StyledMessageIcon.js +45 -0
- package/dist/esm/styled/file-list/StyledFile.js +76 -0
- package/dist/esm/styled/file-list/StyledFileClose.js +22 -0
- package/dist/esm/styled/file-list/StyledFileDelete.js +23 -0
- package/dist/esm/styled/file-list/StyledFileIcon.js +31 -0
- package/dist/esm/styled/file-list/StyledFileList.js +22 -0
- package/dist/esm/styled/file-list/StyledFileListItem.js +24 -0
- package/dist/esm/styled/file-upload/StyledFileUpload.js +47 -0
- package/dist/esm/styled/input-group/StyledInputGroup.js +35 -0
- package/dist/esm/styled/radio/StyledRadioHint.js +24 -0
- package/dist/esm/styled/radio/StyledRadioInput.js +61 -0
- package/dist/esm/styled/radio/StyledRadioLabel.js +30 -0
- package/dist/esm/styled/radio/StyledRadioMessage.js +24 -0
- package/dist/esm/styled/radio/StyledRadioSvg.js +25 -0
- package/dist/esm/styled/range/StyledRangeInput.js +160 -0
- package/dist/esm/styled/select/StyledSelect.js +36 -0
- package/dist/esm/styled/select/StyledSelectWrapper.js +24 -0
- package/dist/esm/styled/text/StyledTextFauxInput.js +61 -0
- package/dist/esm/styled/text/StyledTextInput.js +107 -0
- package/dist/esm/styled/text/StyledTextMediaFigure.js +57 -0
- package/dist/esm/styled/text/StyledTextMediaInput.js +24 -0
- package/dist/esm/styled/text/StyledTextarea.js +33 -0
- package/dist/esm/styled/tiles/StyledTile.js +55 -0
- package/dist/esm/styled/tiles/StyledTileDescription.js +34 -0
- package/dist/esm/styled/tiles/StyledTileIcon.js +38 -0
- package/dist/esm/styled/tiles/StyledTileInput.js +18 -0
- package/dist/esm/styled/tiles/StyledTileLabel.js +36 -0
- package/dist/esm/styled/toggle/StyledToggleHint.js +24 -0
- package/dist/esm/styled/toggle/StyledToggleInput.js +40 -0
- package/dist/esm/styled/toggle/StyledToggleLabel.js +28 -0
- package/dist/esm/styled/toggle/StyledToggleMessage.js +25 -0
- package/dist/esm/styled/toggle/StyledToggleSvg.js +23 -0
- package/dist/esm/types/index.js +11 -0
- package/dist/esm/utils/useFieldContext.js +15 -0
- package/dist/esm/utils/useFieldsetContext.js +15 -0
- package/dist/esm/utils/useFileContext.js +14 -0
- package/dist/esm/utils/useInputContext.js +14 -0
- package/dist/esm/utils/useInputGroupContext.js +14 -0
- package/dist/esm/utils/useTilesContext.js +14 -0
- package/dist/index.cjs.js +95 -101
- package/package.json +5 -5
- package/dist/index.esm.js +0 -2720
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Zendesk, Inc.
|
|
3
|
+
*
|
|
4
|
+
* Use of this source code is governed under the Apache License, Version 2.0
|
|
5
|
+
* found at http://www.apache.org/licenses/LICENSE-2.0.
|
|
6
|
+
*/
|
|
7
|
+
import styled, { css } from 'styled-components';
|
|
8
|
+
import { math } from 'polished';
|
|
9
|
+
import { retrieveComponentStyles, DEFAULT_THEME, getColorV8, getFocusBoxShadow } from '@zendeskgarden/react-theming';
|
|
10
|
+
import { StyledHint } from '../common/StyledHint.js';
|
|
11
|
+
import { StyledLabel } from '../common/StyledLabel.js';
|
|
12
|
+
import { StyledMessage } from '../common/StyledMessage.js';
|
|
13
|
+
|
|
14
|
+
const COMPONENT_ID = 'forms.range';
|
|
15
|
+
const thumbStyles = function (styles) {
|
|
16
|
+
let modifier = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
|
|
17
|
+
return `
|
|
18
|
+
&${modifier}::-moz-range-thumb {
|
|
19
|
+
${styles}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
&${modifier}::-ms-thumb {
|
|
23
|
+
${styles}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
&${modifier}::-webkit-slider-thumb {
|
|
27
|
+
${styles}
|
|
28
|
+
}
|
|
29
|
+
`;
|
|
30
|
+
};
|
|
31
|
+
const trackStyles = function (styles) {
|
|
32
|
+
let modifier = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
|
|
33
|
+
return `
|
|
34
|
+
&${modifier}::-moz-range-track {
|
|
35
|
+
${styles}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
&${modifier}::-ms-track {
|
|
39
|
+
${styles}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
&${modifier}::-webkit-slider-runnable-track {
|
|
43
|
+
${styles}
|
|
44
|
+
}
|
|
45
|
+
`;
|
|
46
|
+
};
|
|
47
|
+
const trackLowerStyles = function (styles) {
|
|
48
|
+
let modifier = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
|
|
49
|
+
return `
|
|
50
|
+
&${modifier}::-moz-range-progress {
|
|
51
|
+
${styles}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
&${modifier}::-ms-fill-lower {
|
|
55
|
+
${styles}
|
|
56
|
+
}
|
|
57
|
+
`;
|
|
58
|
+
};
|
|
59
|
+
const colorStyles = props => {
|
|
60
|
+
const SHADE = 600;
|
|
61
|
+
const thumbBackgroundColor = getColorV8('primaryHue', SHADE, props.theme);
|
|
62
|
+
const thumbBorderColor = thumbBackgroundColor;
|
|
63
|
+
const thumbBoxShadow = props.theme.shadows.lg(math(`${props.theme.space.base} * 1px`), math(`${props.theme.space.base} * 2px`), getColorV8('neutralHue', SHADE + 200, props.theme, 0.24));
|
|
64
|
+
const thumbFocusBoxShadow = getFocusBoxShadow({
|
|
65
|
+
theme: props.theme
|
|
66
|
+
});
|
|
67
|
+
const thumbActiveBackgroundColor = getColorV8('primaryHue', SHADE + 100, props.theme);
|
|
68
|
+
const thumbActiveBorderColor = thumbBorderColor;
|
|
69
|
+
const thumbDisabledBackgroundColor = getColorV8('neutralHue', SHADE - 300, props.theme);
|
|
70
|
+
const thumbDisabledBorderColor = thumbDisabledBackgroundColor;
|
|
71
|
+
const thumbHoverBackgroundColor = thumbActiveBackgroundColor;
|
|
72
|
+
const thumbHoverBorderColor = thumbHoverBackgroundColor;
|
|
73
|
+
const trackBackgroundColor = getColorV8('neutralHue', SHADE - 400, props.theme);
|
|
74
|
+
const trackLowerBackgroundColor = props.hasLowerTrack ? thumbBackgroundColor : '';
|
|
75
|
+
const trackBackgroundImage = props.hasLowerTrack ? `linear-gradient(${trackLowerBackgroundColor}, ${trackLowerBackgroundColor})` : '';
|
|
76
|
+
const trackDisabledLowerBackgroundColor = props.hasLowerTrack ? thumbDisabledBackgroundColor : '';
|
|
77
|
+
const trackDisabledBackgroundImage = props.hasLowerTrack ? `linear-gradient(${trackDisabledLowerBackgroundColor}, ${trackDisabledLowerBackgroundColor})` : '';
|
|
78
|
+
return css(["", " ", " ", " ", " ", " ", " ", " ", " ", ""], trackStyles(`
|
|
79
|
+
background-color: ${trackBackgroundColor};
|
|
80
|
+
background-image: ${trackBackgroundImage}; /* provide means for styling lower range on WebKit */
|
|
81
|
+
`), thumbStyles(`
|
|
82
|
+
border-color: ${thumbBorderColor};
|
|
83
|
+
box-shadow: ${thumbBoxShadow};
|
|
84
|
+
background-color: ${thumbBackgroundColor};
|
|
85
|
+
`), trackLowerStyles(`
|
|
86
|
+
background-color: ${trackLowerBackgroundColor};
|
|
87
|
+
`), thumbStyles(`
|
|
88
|
+
transition:
|
|
89
|
+
border-color .25s ease-in-out,
|
|
90
|
+
background-color .25s ease-in-out;
|
|
91
|
+
border-color: ${thumbHoverBorderColor};
|
|
92
|
+
background-color: ${thumbHoverBackgroundColor};
|
|
93
|
+
`, ':hover'), thumbStyles(`
|
|
94
|
+
box-shadow: ${thumbFocusBoxShadow};
|
|
95
|
+
`, ':focus-visible'), thumbStyles(`
|
|
96
|
+
border-color: ${thumbActiveBorderColor};
|
|
97
|
+
background-color: ${thumbActiveBackgroundColor};
|
|
98
|
+
`, ':active'), trackStyles(`
|
|
99
|
+
background-image: ${trackDisabledBackgroundImage};
|
|
100
|
+
`, ':disabled'), thumbStyles(`
|
|
101
|
+
border-color: ${thumbDisabledBorderColor};
|
|
102
|
+
box-shadow: none;
|
|
103
|
+
background-color: ${thumbDisabledBackgroundColor};
|
|
104
|
+
`, ':disabled'), trackLowerStyles(`
|
|
105
|
+
background-color: ${trackDisabledLowerBackgroundColor};
|
|
106
|
+
`, ':disabled'));
|
|
107
|
+
};
|
|
108
|
+
const sizeStyles = props => {
|
|
109
|
+
const thumbSize = math(`${props.theme.space.base} * 5px`);
|
|
110
|
+
const trackHeight = math(`${props.theme.space.base} * 1.5px`);
|
|
111
|
+
const trackBorderRadius = trackHeight;
|
|
112
|
+
const trackMargin = math(`(${thumbSize} - ${trackHeight}) / 2 + ${props.theme.shadowWidths.md}`);
|
|
113
|
+
const thumbMargin = math(`(${trackHeight} - ${thumbSize}) / 2`);
|
|
114
|
+
return css(["", ":not([hidden]) + &,", " + &,", " + &,& + ", ",& + ", "{margin-top:", ";}", ";", " ", ""], StyledLabel, StyledHint, StyledMessage, StyledHint, StyledMessage, math(`${props.theme.space.base} * 2px`), trackStyles(`
|
|
115
|
+
margin: ${trackMargin} 0;
|
|
116
|
+
border-radius: ${trackBorderRadius};
|
|
117
|
+
height: ${trackHeight};
|
|
118
|
+
`), thumbStyles(`
|
|
119
|
+
margin: ${thumbMargin} 0; /* reset for IE */
|
|
120
|
+
width: ${thumbSize};
|
|
121
|
+
height: ${thumbSize};
|
|
122
|
+
`), trackLowerStyles(`
|
|
123
|
+
border-top-${props.theme.rtl ? 'right' : 'left'}-radius: ${trackBorderRadius};
|
|
124
|
+
border-bottom-${props.theme.rtl ? 'right' : 'left'}-radius: ${trackBorderRadius};
|
|
125
|
+
height: ${trackHeight};
|
|
126
|
+
`));
|
|
127
|
+
};
|
|
128
|
+
const StyledRangeInput = styled.input.attrs(props => ({
|
|
129
|
+
'data-garden-id': COMPONENT_ID,
|
|
130
|
+
'data-garden-version': '9.0.0-next.8',
|
|
131
|
+
type: 'range',
|
|
132
|
+
style: {
|
|
133
|
+
backgroundSize: props.hasLowerTrack && props.backgroundSize
|
|
134
|
+
}
|
|
135
|
+
})).withConfig({
|
|
136
|
+
displayName: "StyledRangeInput",
|
|
137
|
+
componentId: "sc-1iv2yqp-0"
|
|
138
|
+
})(["appearance:none;direction:", ";margin:0;background-color:inherit;cursor:pointer;padding:0;width:100%;vertical-align:middle;", " &::-webkit-slider-container,&::-webkit-slider-runnable-track{background-size:inherit;}", ";", " ", ";&::-moz-focus-outer{border:0;}&::-ms-tooltip{display:none;}&:focus{outline:none;}&:disabled{cursor:default;}", ";"], props => props.theme.rtl && 'rtl', props => trackStyles(`
|
|
139
|
+
appearance: none;
|
|
140
|
+
border-color: transparent; /* reset for IE */
|
|
141
|
+
background-repeat: repeat-y;
|
|
142
|
+
background-size: 0;
|
|
143
|
+
background-position: ${props.theme.rtl ? '100% 100%' : '0% 0%'};
|
|
144
|
+
width: 99.8%; /* fix for IE which cuts off the upper track's border radius */
|
|
145
|
+
color: transparent; /* reset for IE */
|
|
146
|
+
box-sizing: border-box; /* reset for IE */
|
|
147
|
+
`), props => sizeStyles(props), props => thumbStyles(`
|
|
148
|
+
appearance: none;
|
|
149
|
+
transition: box-shadow .1s ease-in-out;
|
|
150
|
+
border: ${props.theme.borders.md};
|
|
151
|
+
border-radius: 100%;
|
|
152
|
+
box-sizing: border-box;
|
|
153
|
+
`), props => colorStyles(props), props => retrieveComponentStyles(COMPONENT_ID, props));
|
|
154
|
+
StyledRangeInput.defaultProps = {
|
|
155
|
+
backgroundSize: '0%',
|
|
156
|
+
hasLowerTrack: true,
|
|
157
|
+
theme: DEFAULT_THEME
|
|
158
|
+
};
|
|
159
|
+
|
|
160
|
+
export { StyledRangeInput };
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Zendesk, Inc.
|
|
3
|
+
*
|
|
4
|
+
* Use of this source code is governed under the Apache License, Version 2.0
|
|
5
|
+
* found at http://www.apache.org/licenses/LICENSE-2.0.
|
|
6
|
+
*/
|
|
7
|
+
import styled, { css } from 'styled-components';
|
|
8
|
+
import { math } from 'polished';
|
|
9
|
+
import { getColorV8, DEFAULT_THEME } from '@zendeskgarden/react-theming';
|
|
10
|
+
import { StyledTextInput } from '../text/StyledTextInput.js';
|
|
11
|
+
import { StyledTextMediaFigure } from '../text/StyledTextMediaFigure.js';
|
|
12
|
+
|
|
13
|
+
const COMPONENT_ID = 'forms.select';
|
|
14
|
+
const colorStyles = props => {
|
|
15
|
+
const color = getColorV8('neutralHue', 700, props.theme);
|
|
16
|
+
return css(["&:hover + ", ",&:focus + ", ",&:focus-visible + ", "{color:", ";}"], StyledTextMediaFigure, StyledTextMediaFigure, StyledTextMediaFigure, color);
|
|
17
|
+
};
|
|
18
|
+
const sizeStyles = props => {
|
|
19
|
+
const padding = math(`${props.theme.iconSizes.md} + ${props.theme.space.base * 5}`);
|
|
20
|
+
const iconVerticalPosition = `${props.theme.space.base * (props.isCompact ? 1.5 : 2.5) + 1}px`;
|
|
21
|
+
const iconHorizontalPosition = `${props.theme.space.base * 3}px`;
|
|
22
|
+
return css(["padding-", ":", ";& + ", "{top:", ";", ":", ";}"], props.theme.rtl ? 'left' : 'right', !props.isBare && padding, StyledTextMediaFigure, iconVerticalPosition, props.theme.rtl ? 'left' : 'right', iconHorizontalPosition);
|
|
23
|
+
};
|
|
24
|
+
const StyledSelect = styled(StyledTextInput).attrs({
|
|
25
|
+
'data-garden-id': COMPONENT_ID,
|
|
26
|
+
'data-garden-version': '9.0.0-next.8',
|
|
27
|
+
as: 'select'
|
|
28
|
+
}).withConfig({
|
|
29
|
+
displayName: "StyledSelect",
|
|
30
|
+
componentId: "sc-8xdxpt-0"
|
|
31
|
+
})(["cursor:pointer;text-overflow:ellipsis;", ";", ";&::-ms-expand{display:none;}&::-ms-value{background-color:transparent;color:inherit;}&:-moz-focusring{transition:none;text-shadow:0 0 0 ", ";color:transparent;}& + ", "{position:absolute;pointer-events:none;}"], props => sizeStyles(props), props => colorStyles(props), props => getColorV8('foreground', 600 , props.theme), StyledTextMediaFigure);
|
|
32
|
+
StyledSelect.defaultProps = {
|
|
33
|
+
theme: DEFAULT_THEME
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
export { StyledSelect };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Zendesk, Inc.
|
|
3
|
+
*
|
|
4
|
+
* Use of this source code is governed under the Apache License, Version 2.0
|
|
5
|
+
* found at http://www.apache.org/licenses/LICENSE-2.0.
|
|
6
|
+
*/
|
|
7
|
+
import styled from 'styled-components';
|
|
8
|
+
import { SELECTOR_FOCUS_VISIBLE, DEFAULT_THEME } from '@zendeskgarden/react-theming';
|
|
9
|
+
import { StyledTextFauxInput } from '../text/StyledTextFauxInput.js';
|
|
10
|
+
import { StyledSelect } from './StyledSelect.js';
|
|
11
|
+
|
|
12
|
+
const COMPONENT_ID = 'forms.select_wrapper';
|
|
13
|
+
const StyledSelectWrapper = styled(StyledTextFauxInput).attrs({
|
|
14
|
+
'data-garden-id': COMPONENT_ID,
|
|
15
|
+
'data-garden-version': '9.0.0-next.8'
|
|
16
|
+
}).withConfig({
|
|
17
|
+
displayName: "StyledSelectWrapper",
|
|
18
|
+
componentId: "sc-i7b6hw-0"
|
|
19
|
+
})(["position:relative;padding:0;overflow:visible;& > ", "{border-color:transparent;background-color:transparent;", "{box-shadow:unset;}}"], StyledSelect, SELECTOR_FOCUS_VISIBLE);
|
|
20
|
+
StyledSelectWrapper.defaultProps = {
|
|
21
|
+
theme: DEFAULT_THEME
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
export { StyledSelectWrapper };
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Zendesk, Inc.
|
|
3
|
+
*
|
|
4
|
+
* Use of this source code is governed under the Apache License, Version 2.0
|
|
5
|
+
* found at http://www.apache.org/licenses/LICENSE-2.0.
|
|
6
|
+
*/
|
|
7
|
+
import styled, { css } from 'styled-components';
|
|
8
|
+
import { SELECTOR_FOCUS_VISIBLE, retrieveComponentStyles, DEFAULT_THEME, focusStyles, getColorV8 } from '@zendeskgarden/react-theming';
|
|
9
|
+
import { StyledTextInput } from './StyledTextInput.js';
|
|
10
|
+
import { StyledTextMediaFigure } from './StyledTextMediaFigure.js';
|
|
11
|
+
|
|
12
|
+
const COMPONENT_ID = 'forms.faux_input';
|
|
13
|
+
const VALIDATION_HUES = {
|
|
14
|
+
success: 'successHue',
|
|
15
|
+
warning: 'warningHue',
|
|
16
|
+
error: 'dangerHue'
|
|
17
|
+
};
|
|
18
|
+
function getValidationHue(validation) {
|
|
19
|
+
let defaultHue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'primaryHue';
|
|
20
|
+
if (validation) {
|
|
21
|
+
return VALIDATION_HUES[validation];
|
|
22
|
+
}
|
|
23
|
+
return defaultHue;
|
|
24
|
+
}
|
|
25
|
+
const colorStyles = props => {
|
|
26
|
+
const {
|
|
27
|
+
theme,
|
|
28
|
+
validation,
|
|
29
|
+
focusInset,
|
|
30
|
+
isBare,
|
|
31
|
+
isFocused
|
|
32
|
+
} = props;
|
|
33
|
+
return css(["", ""], focusStyles({
|
|
34
|
+
theme,
|
|
35
|
+
inset: focusInset,
|
|
36
|
+
condition: !isBare,
|
|
37
|
+
color: {
|
|
38
|
+
hue: getValidationHue(validation),
|
|
39
|
+
shade: validation === 'warning' ? 700 : 600
|
|
40
|
+
},
|
|
41
|
+
selector: isFocused ? '&' : '&:focus-within',
|
|
42
|
+
styles: {
|
|
43
|
+
borderColor: getColorV8(getValidationHue(validation), 600, theme)
|
|
44
|
+
}
|
|
45
|
+
}));
|
|
46
|
+
};
|
|
47
|
+
const StyledTextFauxInput = styled(StyledTextInput).attrs(props => ({
|
|
48
|
+
as: 'div',
|
|
49
|
+
'aria-readonly': props.isReadOnly,
|
|
50
|
+
'aria-disabled': props.isDisabled,
|
|
51
|
+
'data-garden-id': COMPONENT_ID,
|
|
52
|
+
'data-garden-version': '9.0.0-next.8'
|
|
53
|
+
})).withConfig({
|
|
54
|
+
displayName: "StyledTextFauxInput",
|
|
55
|
+
componentId: "sc-yqw7j9-0"
|
|
56
|
+
})(["display:", ";align-items:", ";cursor:", ";overflow:hidden;", " & > ", "{vertical-align:", ";", "{box-shadow:unset;}}& > ", "{flex-shrink:", ";}", ";"], props => props.mediaLayout ? 'inline-flex' : 'inline-block', props => props.mediaLayout && 'baseline', props => props.mediaLayout && !props.isDisabled ? 'text' : 'default', colorStyles, StyledTextInput, props => !props.mediaLayout && 'baseline', SELECTOR_FOCUS_VISIBLE, StyledTextMediaFigure, props => props.mediaLayout && '0', props => retrieveComponentStyles(COMPONENT_ID, props));
|
|
57
|
+
StyledTextFauxInput.defaultProps = {
|
|
58
|
+
theme: DEFAULT_THEME
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
export { StyledTextFauxInput, getValidationHue };
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Zendesk, Inc.
|
|
3
|
+
*
|
|
4
|
+
* Use of this source code is governed under the Apache License, Version 2.0
|
|
5
|
+
* found at http://www.apache.org/licenses/LICENSE-2.0.
|
|
6
|
+
*/
|
|
7
|
+
import styled, { css } from 'styled-components';
|
|
8
|
+
import { math, em } from 'polished';
|
|
9
|
+
import { retrieveComponentStyles, DEFAULT_THEME, getColorV8, focusStyles, getLineHeight } from '@zendeskgarden/react-theming';
|
|
10
|
+
import { StyledHint } from '../common/StyledHint.js';
|
|
11
|
+
import { StyledLabel } from '../common/StyledLabel.js';
|
|
12
|
+
import { StyledMessage } from '../common/StyledMessage.js';
|
|
13
|
+
|
|
14
|
+
const COMPONENT_ID = 'forms.input';
|
|
15
|
+
const isInvalid = validation => {
|
|
16
|
+
return validation === 'warning' || validation === 'error';
|
|
17
|
+
};
|
|
18
|
+
const colorStyles = props => {
|
|
19
|
+
const HUE = 'primaryHue';
|
|
20
|
+
const SHADE = 600;
|
|
21
|
+
const placeholderColor = getColorV8('neutralHue', SHADE - 200, props.theme);
|
|
22
|
+
let borderColor;
|
|
23
|
+
let hoverBorderColor;
|
|
24
|
+
let focusBorderColor;
|
|
25
|
+
let focusRingHue = HUE;
|
|
26
|
+
let focusRingShade = SHADE;
|
|
27
|
+
if (props.validation) {
|
|
28
|
+
let hue = HUE;
|
|
29
|
+
if (props.validation === 'success') {
|
|
30
|
+
hue = 'successHue';
|
|
31
|
+
} else if (props.validation === 'warning') {
|
|
32
|
+
hue = 'warningHue';
|
|
33
|
+
focusRingShade = 700;
|
|
34
|
+
} else if (props.validation === 'error') {
|
|
35
|
+
hue = 'dangerHue';
|
|
36
|
+
}
|
|
37
|
+
borderColor = getColorV8(hue, SHADE, props.theme);
|
|
38
|
+
hoverBorderColor = borderColor;
|
|
39
|
+
focusBorderColor = borderColor;
|
|
40
|
+
focusRingHue = hue;
|
|
41
|
+
} else {
|
|
42
|
+
borderColor = getColorV8('neutralHue', SHADE - 300, props.theme);
|
|
43
|
+
hoverBorderColor = getColorV8('primaryHue', SHADE, props.theme);
|
|
44
|
+
focusBorderColor = hoverBorderColor;
|
|
45
|
+
}
|
|
46
|
+
const readOnlyBackgroundColor = getColorV8('neutralHue', SHADE - 500, props.theme);
|
|
47
|
+
const readOnlyBorderColor = getColorV8('neutralHue', SHADE - 300, props.theme);
|
|
48
|
+
const disabledBackgroundColor = readOnlyBackgroundColor;
|
|
49
|
+
const disabledBorderColor = getColorV8('neutralHue', SHADE - 400, props.theme);
|
|
50
|
+
const disabledForegroundColor = getColorV8('neutralHue', SHADE - 200, props.theme);
|
|
51
|
+
let controlledBorderColor = borderColor;
|
|
52
|
+
if (props.isFocused) {
|
|
53
|
+
controlledBorderColor = focusBorderColor;
|
|
54
|
+
}
|
|
55
|
+
if (props.isHovered) {
|
|
56
|
+
controlledBorderColor = hoverBorderColor;
|
|
57
|
+
}
|
|
58
|
+
return css(["border-color:", ";background-color:", ";color:", ";&::placeholder{color:", ";}&[readonly],&[aria-readonly='true']{border-color:", ";background-color:", ";}&:hover{border-color:", ";}", " &:disabled,&[aria-disabled='true']{border-color:", ";background-color:", ";color:", ";}"], controlledBorderColor, props.isBare ? 'transparent' : getColorV8('background', 600 , props.theme), getColorV8('foreground', 600 , props.theme), placeholderColor, readOnlyBorderColor, !props.isBare && readOnlyBackgroundColor, hoverBorderColor, focusStyles({
|
|
59
|
+
theme: props.theme,
|
|
60
|
+
inset: props.focusInset,
|
|
61
|
+
condition: !props.isBare,
|
|
62
|
+
color: {
|
|
63
|
+
hue: focusRingHue,
|
|
64
|
+
shade: focusRingShade
|
|
65
|
+
},
|
|
66
|
+
styles: {
|
|
67
|
+
borderColor: focusBorderColor
|
|
68
|
+
}
|
|
69
|
+
}), disabledBorderColor, !props.isBare && disabledBackgroundColor, disabledForegroundColor);
|
|
70
|
+
};
|
|
71
|
+
const sizeStyles = props => {
|
|
72
|
+
const fontSize = props.theme.fontSizes.md;
|
|
73
|
+
const paddingHorizontal = `${props.theme.space.base * 3}px`;
|
|
74
|
+
let height;
|
|
75
|
+
let paddingVertical;
|
|
76
|
+
let browseFontSize;
|
|
77
|
+
let swatchHeight;
|
|
78
|
+
if (props.isCompact) {
|
|
79
|
+
height = `${props.theme.space.base * 8}px`;
|
|
80
|
+
paddingVertical = `${props.theme.space.base * 1.5}px`;
|
|
81
|
+
browseFontSize = math(`${props.theme.fontSizes.sm} - 1`);
|
|
82
|
+
swatchHeight = `${props.theme.space.base * 6}px`;
|
|
83
|
+
} else {
|
|
84
|
+
height = `${props.theme.space.base * 10}px`;
|
|
85
|
+
paddingVertical = `${props.theme.space.base * 2.5}px`;
|
|
86
|
+
browseFontSize = props.theme.fontSizes.sm;
|
|
87
|
+
swatchHeight = `${props.theme.space.base * 7}px`;
|
|
88
|
+
}
|
|
89
|
+
const lineHeight = math(`${height} - (${paddingVertical} * 2) - (${props.theme.borderWidths.sm} * 2)`);
|
|
90
|
+
const padding = props.isBare ? '0' : `${em(paddingVertical, fontSize)} ${em(paddingHorizontal, fontSize)}`;
|
|
91
|
+
const swatchMarginVertical = math(`(${lineHeight} - ${swatchHeight}) / 2`);
|
|
92
|
+
const swatchMarginHorizontal = math(`${paddingVertical} + ${swatchMarginVertical} - ${paddingHorizontal}`);
|
|
93
|
+
return css(["padding:", ";min-height:", ";line-height:", ";font-size:", ";&::-ms-browse{font-size:", ";}&[type='date'],&[type='datetime-local'],&[type='file'],&[type='month'],&[type='time'],&[type='week']{max-height:", ";}&[type='file']{line-height:1;}@supports (-ms-ime-align:auto){&[type='color']{padding:", ";}}&::-moz-color-swatch{margin-top:", ";margin-left:", ";width:calc(100% + ", ");height:", ";}&::-webkit-color-swatch{margin:", " ", ";}", ":not([hidden]) + &&,", " + &&,", " + &&,&& + ", ",&& + ", "{margin-top:", "px;}"], padding, props.isBare ? '1em' : height, getLineHeight(lineHeight, fontSize), fontSize, browseFontSize, height, props.isCompact ? '0 2px' : '1px 3px', swatchMarginVertical, swatchMarginHorizontal, math(`${swatchMarginHorizontal} * -2`), swatchHeight, swatchMarginVertical, swatchMarginHorizontal, StyledLabel, StyledHint, StyledMessage, StyledHint, StyledMessage, props.theme.space.base * (props.isCompact ? 1 : 2));
|
|
94
|
+
};
|
|
95
|
+
const StyledTextInput = styled.input.attrs(props => ({
|
|
96
|
+
'data-garden-id': COMPONENT_ID,
|
|
97
|
+
'data-garden-version': '9.0.0-next.8',
|
|
98
|
+
'aria-invalid': isInvalid(props.validation)
|
|
99
|
+
})).withConfig({
|
|
100
|
+
displayName: "StyledTextInput",
|
|
101
|
+
componentId: "sc-k12n8x-0"
|
|
102
|
+
})(["appearance:none;transition:border-color 0.25s ease-in-out,box-shadow 0.1s ease-in-out,background-color 0.25s ease-in-out,color 0.25s ease-in-out,z-index 0.25s ease-in-out;direction:", ";border:", ";border-radius:", ";width:100%;box-sizing:border-box;vertical-align:middle;font-family:inherit;&::-ms-browse{border-radius:", ";}&::-ms-clear,&::-ms-reveal{display:none;}&::-moz-color-swatch{border:none;border-radius:", ";}&::-webkit-color-swatch{border:none;border-radius:", ";}&::-webkit-color-swatch-wrapper{padding:0;}&::-webkit-clear-button,&::-webkit-inner-spin-button,&::-webkit-search-cancel-button,&::-webkit-search-results-button{display:none;}&::-webkit-datetime-edit{direction:", ";line-height:1;}&::placeholder{opacity:1;}&:invalid{box-shadow:none;}&[type='file']::-ms-value{display:none;}@media screen and (min--moz-device-pixel-ratio:0){&[type='number']{appearance:textfield;}}", ";", ";&:disabled{cursor:default;}", ";"], props => props.theme.rtl && 'rtl', props => props.isBare ? 'none' : props.theme.borders.sm, props => props.isBare ? '0' : props.theme.borderRadii.md, props => props.theme.borderRadii.sm, props => props.theme.borderRadii.sm, props => props.theme.borderRadii.sm, props => props.theme.rtl && 'rtl', props => sizeStyles(props), props => colorStyles(props), props => retrieveComponentStyles(COMPONENT_ID, props));
|
|
103
|
+
StyledTextInput.defaultProps = {
|
|
104
|
+
theme: DEFAULT_THEME
|
|
105
|
+
};
|
|
106
|
+
|
|
107
|
+
export { StyledTextInput };
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Zendesk, Inc.
|
|
3
|
+
*
|
|
4
|
+
* Use of this source code is governed under the Apache License, Version 2.0
|
|
5
|
+
* found at http://www.apache.org/licenses/LICENSE-2.0.
|
|
6
|
+
*/
|
|
7
|
+
import styled, { css } from 'styled-components';
|
|
8
|
+
import React__default, { Children } from 'react';
|
|
9
|
+
import { retrieveComponentStyles, DEFAULT_THEME, getColorV8 } from '@zendeskgarden/react-theming';
|
|
10
|
+
|
|
11
|
+
const COMPONENT_ID = 'forms.media_figure';
|
|
12
|
+
const colorStyles = props => {
|
|
13
|
+
let shade = 600;
|
|
14
|
+
if (props.isDisabled) {
|
|
15
|
+
shade = 400;
|
|
16
|
+
} else if (props.isHovered || props.isFocused) {
|
|
17
|
+
shade = 700;
|
|
18
|
+
}
|
|
19
|
+
return css(["color:", ";"], getColorV8('neutralHue', shade, props.theme));
|
|
20
|
+
};
|
|
21
|
+
const sizeStyles = props => {
|
|
22
|
+
const size = props.theme.iconSizes.md;
|
|
23
|
+
const marginFirst = `1px ${props.theme.space.base * 2}px auto 0`;
|
|
24
|
+
const marginLast = `1px 0 auto ${props.theme.space.base * 2}px`;
|
|
25
|
+
let margin;
|
|
26
|
+
if (props.position === 'start') {
|
|
27
|
+
margin = props.theme.rtl ? marginLast : marginFirst;
|
|
28
|
+
} else {
|
|
29
|
+
margin = props.theme.rtl ? marginFirst : marginLast;
|
|
30
|
+
}
|
|
31
|
+
return css(["margin:", ";width:", ";height:", ";"], margin, size, size);
|
|
32
|
+
};
|
|
33
|
+
const StyledTextMediaFigure = styled(
|
|
34
|
+
_ref => {
|
|
35
|
+
let {
|
|
36
|
+
children,
|
|
37
|
+
position,
|
|
38
|
+
isHovered,
|
|
39
|
+
isFocused,
|
|
40
|
+
isDisabled,
|
|
41
|
+
isRotated,
|
|
42
|
+
theme,
|
|
43
|
+
...props
|
|
44
|
+
} = _ref;
|
|
45
|
+
return React__default.cloneElement(Children.only(children), props);
|
|
46
|
+
}).attrs({
|
|
47
|
+
'data-garden-id': COMPONENT_ID,
|
|
48
|
+
'data-garden-version': '9.0.0-next.8'
|
|
49
|
+
}).withConfig({
|
|
50
|
+
displayName: "StyledTextMediaFigure",
|
|
51
|
+
componentId: "sc-1qepknj-0"
|
|
52
|
+
})(["transform:", ";transition:transform 0.25s ease-in-out,color 0.25s ease-in-out;", ";", " ", ";"], props => props.isRotated && `rotate(${props.theme.rtl ? '-' : '+'}180deg)`, props => colorStyles(props), props => sizeStyles(props), props => retrieveComponentStyles(COMPONENT_ID, props));
|
|
53
|
+
StyledTextMediaFigure.defaultProps = {
|
|
54
|
+
theme: DEFAULT_THEME
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
export { StyledTextMediaFigure };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Zendesk, Inc.
|
|
3
|
+
*
|
|
4
|
+
* Use of this source code is governed under the Apache License, Version 2.0
|
|
5
|
+
* found at http://www.apache.org/licenses/LICENSE-2.0.
|
|
6
|
+
*/
|
|
7
|
+
import styled from 'styled-components';
|
|
8
|
+
import { retrieveComponentStyles, DEFAULT_THEME } from '@zendeskgarden/react-theming';
|
|
9
|
+
import { StyledTextInput } from './StyledTextInput.js';
|
|
10
|
+
|
|
11
|
+
const COMPONENT_ID = 'forms.media_input';
|
|
12
|
+
const StyledTextMediaInput = styled(StyledTextInput).attrs({
|
|
13
|
+
'data-garden-id': COMPONENT_ID,
|
|
14
|
+
'data-garden-version': '9.0.0-next.8',
|
|
15
|
+
isBare: true
|
|
16
|
+
}).withConfig({
|
|
17
|
+
displayName: "StyledTextMediaInput",
|
|
18
|
+
componentId: "sc-12i9xfi-0"
|
|
19
|
+
})(["flex-grow:1;", ";"], props => retrieveComponentStyles(COMPONENT_ID, props));
|
|
20
|
+
StyledTextMediaInput.defaultProps = {
|
|
21
|
+
theme: DEFAULT_THEME
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
export { StyledTextMediaInput };
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Zendesk, Inc.
|
|
3
|
+
*
|
|
4
|
+
* Use of this source code is governed under the Apache License, Version 2.0
|
|
5
|
+
* found at http://www.apache.org/licenses/LICENSE-2.0.
|
|
6
|
+
*/
|
|
7
|
+
import styled from 'styled-components';
|
|
8
|
+
import { retrieveComponentStyles, DEFAULT_THEME } from '@zendeskgarden/react-theming';
|
|
9
|
+
import { StyledTextInput } from './StyledTextInput.js';
|
|
10
|
+
|
|
11
|
+
const COMPONENT_ID = 'forms.textarea';
|
|
12
|
+
const hiddenStyles = `
|
|
13
|
+
visibility: hidden;
|
|
14
|
+
position: absolute;
|
|
15
|
+
overflow: hidden;
|
|
16
|
+
height: 0;
|
|
17
|
+
top: 0;
|
|
18
|
+
left: 0;
|
|
19
|
+
transform: translateZ(0);
|
|
20
|
+
`;
|
|
21
|
+
const StyledTextarea = styled(StyledTextInput).attrs({
|
|
22
|
+
as: 'textarea',
|
|
23
|
+
'data-garden-id': COMPONENT_ID,
|
|
24
|
+
'data-garden-version': '9.0.0-next.8'
|
|
25
|
+
}).withConfig({
|
|
26
|
+
displayName: "StyledTextarea",
|
|
27
|
+
componentId: "sc-wxschl-0"
|
|
28
|
+
})(["resize:", ";overflow:auto;", ";", ";"], props => props.isResizable ? 'vertical' : 'none', props => props.isHidden && hiddenStyles, props => retrieveComponentStyles(COMPONENT_ID, props));
|
|
29
|
+
StyledTextarea.defaultProps = {
|
|
30
|
+
theme: DEFAULT_THEME
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
export { StyledTextarea };
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Zendesk, Inc.
|
|
3
|
+
*
|
|
4
|
+
* Use of this source code is governed under the Apache License, Version 2.0
|
|
5
|
+
* found at http://www.apache.org/licenses/LICENSE-2.0.
|
|
6
|
+
*/
|
|
7
|
+
import styled, { css } from 'styled-components';
|
|
8
|
+
import { retrieveComponentStyles, DEFAULT_THEME, getColorV8, focusStyles } from '@zendeskgarden/react-theming';
|
|
9
|
+
import { StyledTileIcon } from './StyledTileIcon.js';
|
|
10
|
+
|
|
11
|
+
const COMPONENT_ID = 'forms.tile';
|
|
12
|
+
const colorStyles = props => {
|
|
13
|
+
const SHADE = 600;
|
|
14
|
+
const iconColor = getColorV8('neutralHue', SHADE, props.theme);
|
|
15
|
+
const color = getColorV8('neutralHue', SHADE + 200, props.theme);
|
|
16
|
+
const borderColor = getColorV8('neutralHue', SHADE - 300, props.theme);
|
|
17
|
+
const hoverBackgroundColor = getColorV8('primaryHue', SHADE, props.theme, 0.08);
|
|
18
|
+
const hoverBorderColor = getColorV8('primaryHue', SHADE, props.theme);
|
|
19
|
+
const focusBorderColor = hoverBorderColor;
|
|
20
|
+
const activeBackgroundColor = getColorV8('primaryHue', SHADE, props.theme, 0.2);
|
|
21
|
+
const activeBorderColor = focusBorderColor;
|
|
22
|
+
const disabledBackgroundColor = getColorV8('neutralHue', SHADE - 500, props.theme);
|
|
23
|
+
const disabledBorderColor = getColorV8('neutralHue', SHADE - 400, props.theme);
|
|
24
|
+
const disabledColor = getColorV8('neutralHue', SHADE - 200, props.theme);
|
|
25
|
+
const selectedBorderColor = focusBorderColor;
|
|
26
|
+
const selectedBackgroundColor = selectedBorderColor;
|
|
27
|
+
const selectedHoverBorderColor = getColorV8('primaryHue', SHADE + 100, props.theme);
|
|
28
|
+
const selectedHoverBackgroundColor = selectedHoverBorderColor;
|
|
29
|
+
const selectedActiveBorderColor = getColorV8('primaryHue', SHADE + 200, props.theme);
|
|
30
|
+
const selectedActiveBackgroundColor = selectedActiveBorderColor;
|
|
31
|
+
const selectedDisabledBackgroundColor = disabledBorderColor;
|
|
32
|
+
return css(["border:", " ", ";border-color:", ";background-color:", ";color:", ";", "{color:", ";}&:hover:not([aria-disabled='true']){border-color:", ";background-color:", ";", "{color:", ";}}", " &:active:not([aria-disabled='true']){border-color:", ";background-color:", ";", "{color:", ";}}&[data-garden-selected='true']{border-color:", ";background-color:", ";color:", ";", "{color:", ";}}&[data-garden-selected='true']:not([aria-disabled='true']):hover{border-color:", ";background-color:", ";color:", ";", "{color:", ";}}&[data-garden-selected='true']:not([aria-disabled='true']):active{border-color:", ";background-color:", ";color:", ";", "{color:", ";}}&[aria-disabled='true']{border-color:", ";background-color:", ";color:", ";", "{color:", ";}}&[data-garden-selected='true'][aria-disabled='true']{background-color:", ";color:", ";", "{color:", ";}}"], props.theme.borders.sm, getColorV8('neutralHue', SHADE - 300, props.theme), borderColor, getColorV8('background', 600 , props.theme), color, StyledTileIcon, iconColor, hoverBorderColor, hoverBackgroundColor, StyledTileIcon, color, focusStyles({
|
|
33
|
+
theme: props.theme,
|
|
34
|
+
color: {
|
|
35
|
+
hue: focusBorderColor
|
|
36
|
+
},
|
|
37
|
+
styles: {
|
|
38
|
+
borderColor: focusBorderColor
|
|
39
|
+
},
|
|
40
|
+
selector: `&:focus-within`
|
|
41
|
+
}), activeBorderColor, activeBackgroundColor, StyledTileIcon, color, selectedBorderColor, selectedBackgroundColor, getColorV8('background', 600 , props.theme), StyledTileIcon, getColorV8('background', 600 , props.theme), selectedHoverBorderColor, selectedHoverBackgroundColor, getColorV8('background', 600 , props.theme), StyledTileIcon, getColorV8('background', 600 , props.theme), selectedActiveBorderColor, selectedActiveBackgroundColor, getColorV8('background', 600 , props.theme), StyledTileIcon, getColorV8('background', 600 , props.theme), disabledBorderColor, disabledBackgroundColor, disabledColor, StyledTileIcon, disabledColor, selectedDisabledBackgroundColor, disabledColor, StyledTileIcon, disabledColor);
|
|
42
|
+
};
|
|
43
|
+
const StyledTile = styled.label.attrs(props => ({
|
|
44
|
+
'data-garden-id': COMPONENT_ID,
|
|
45
|
+
'data-garden-version': '9.0.0-next.8',
|
|
46
|
+
'data-garden-selected': props.isSelected
|
|
47
|
+
})).withConfig({
|
|
48
|
+
displayName: "StyledTile",
|
|
49
|
+
componentId: "sc-1jjvmxs-0"
|
|
50
|
+
})(["display:block;position:relative;transition:border-color .25s ease-in-out,box-shadow .1s ease-in-out,background-color .25s ease-in-out,color .25s ease-in-out;border-radius:", ";cursor:", ";padding:", "px;direction:", ";min-width:132px;word-break:break-word;", ";", ";"], props => props.theme.borderRadii.md, props => !props.isDisabled && 'pointer', props => props.theme.space.base * 5, props => props.theme.rtl && 'rtl', props => colorStyles(props), props => retrieveComponentStyles(COMPONENT_ID, props));
|
|
51
|
+
StyledTile.defaultProps = {
|
|
52
|
+
theme: DEFAULT_THEME
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
export { StyledTile };
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Zendesk, Inc.
|
|
3
|
+
*
|
|
4
|
+
* Use of this source code is governed under the Apache License, Version 2.0
|
|
5
|
+
* found at http://www.apache.org/licenses/LICENSE-2.0.
|
|
6
|
+
*/
|
|
7
|
+
import styled, { css } from 'styled-components';
|
|
8
|
+
import { math } from 'polished';
|
|
9
|
+
import { getLineHeight, retrieveComponentStyles, DEFAULT_THEME } from '@zendeskgarden/react-theming';
|
|
10
|
+
|
|
11
|
+
const COMPONENT_ID = 'forms.tile_description';
|
|
12
|
+
const sizeStyles = props => {
|
|
13
|
+
let marginDirection = 'left';
|
|
14
|
+
let marginValue;
|
|
15
|
+
if (props.theme.rtl) {
|
|
16
|
+
marginDirection = 'right';
|
|
17
|
+
}
|
|
18
|
+
if (!props.isCentered) {
|
|
19
|
+
marginValue = math(`(${props.theme.iconSizes.md} * 2) + ${props.theme.space.base * 5}px`);
|
|
20
|
+
}
|
|
21
|
+
return css(["margin-top:", "px;margin-", ":", ";"], props.theme.space.base, marginDirection, marginValue);
|
|
22
|
+
};
|
|
23
|
+
const StyledTileDescription = styled.span.attrs({
|
|
24
|
+
'data-garden-id': COMPONENT_ID,
|
|
25
|
+
'data-garden-version': '9.0.0-next.8'
|
|
26
|
+
}).withConfig({
|
|
27
|
+
displayName: "StyledTileDescription",
|
|
28
|
+
componentId: "sc-xfuu7u-0"
|
|
29
|
+
})(["display:block;text-align:", ";line-height:", ";font-size:", ";", ";", ";"], props => props.isCentered && 'center', props => getLineHeight(props.theme.space.base * 4, props.theme.fontSizes.sm), props => props.theme.fontSizes.sm, props => sizeStyles(props), props => retrieveComponentStyles(COMPONENT_ID, props));
|
|
30
|
+
StyledTileDescription.defaultProps = {
|
|
31
|
+
theme: DEFAULT_THEME
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
export { StyledTileDescription };
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Zendesk, Inc.
|
|
3
|
+
*
|
|
4
|
+
* Use of this source code is governed under the Apache License, Version 2.0
|
|
5
|
+
* found at http://www.apache.org/licenses/LICENSE-2.0.
|
|
6
|
+
*/
|
|
7
|
+
import styled, { css } from 'styled-components';
|
|
8
|
+
import { retrieveComponentStyles, DEFAULT_THEME } from '@zendeskgarden/react-theming';
|
|
9
|
+
import { math } from 'polished';
|
|
10
|
+
|
|
11
|
+
const COMPONENT_ID = 'forms.tile_icon';
|
|
12
|
+
const sizeStyles = props => {
|
|
13
|
+
const iconSize = math(`${props.theme.iconSizes.md} * 2`);
|
|
14
|
+
let position;
|
|
15
|
+
let top;
|
|
16
|
+
let horizontalValue;
|
|
17
|
+
if (!props.isCentered) {
|
|
18
|
+
position = 'absolute';
|
|
19
|
+
top = `${props.theme.space.base * 6}px`;
|
|
20
|
+
horizontalValue = `left: ${props.theme.space.base * 5}px`;
|
|
21
|
+
if (props.theme.rtl) {
|
|
22
|
+
horizontalValue = `right: ${props.theme.space.base * 5}px`;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return css(["position:", ";top:", ";", ";& > *{width:", ";height:", ";}"], position, top, horizontalValue, iconSize, iconSize);
|
|
26
|
+
};
|
|
27
|
+
const StyledTileIcon = styled.span.attrs({
|
|
28
|
+
'data-garden-id': COMPONENT_ID,
|
|
29
|
+
'data-garden-version': '9.0.0-next.8'
|
|
30
|
+
}).withConfig({
|
|
31
|
+
displayName: "StyledTileIcon",
|
|
32
|
+
componentId: "sc-1wazhg4-0"
|
|
33
|
+
})(["display:block;transition:color 0.25s ease-in-out;text-align:center;line-height:0;", ";", ";"], props => sizeStyles(props), props => retrieveComponentStyles(COMPONENT_ID, props));
|
|
34
|
+
StyledTileIcon.defaultProps = {
|
|
35
|
+
theme: DEFAULT_THEME
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
export { StyledTileIcon };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Zendesk, Inc.
|
|
3
|
+
*
|
|
4
|
+
* Use of this source code is governed under the Apache License, Version 2.0
|
|
5
|
+
* found at http://www.apache.org/licenses/LICENSE-2.0.
|
|
6
|
+
*/
|
|
7
|
+
import styled from 'styled-components';
|
|
8
|
+
import { DEFAULT_THEME } from '@zendeskgarden/react-theming';
|
|
9
|
+
|
|
10
|
+
const StyledTileInput = styled.input.withConfig({
|
|
11
|
+
displayName: "StyledTileInput",
|
|
12
|
+
componentId: "sc-1nq2m6q-0"
|
|
13
|
+
})(["position:absolute;border:0;clip:rect(1px,1px,1px,1px);padding:0;width:1px;height:1px;overflow:hidden;white-space:nowrap;"]);
|
|
14
|
+
StyledTileInput.defaultProps = {
|
|
15
|
+
theme: DEFAULT_THEME
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
export { StyledTileInput };
|