@itcase/ui 1.0.93 → 1.0.94

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.
@@ -57,6 +57,7 @@ function Avatar(props) {
57
57
  before,
58
58
  src,
59
59
  type,
60
+ mode,
60
61
  onClick,
61
62
  textSize,
62
63
  textColor,
@@ -90,7 +91,7 @@ function Avatar(props) {
90
91
  return `${firstChar}${secondChar}`;
91
92
  }, [firstName, secondName]);
92
93
  return /*#__PURE__*/React__default.default.createElement("div", {
93
- className: clsx__default.default(className, 'avatar', shapeClass, size && `avatar_size_${size}`, type && `avatar_type_${type}`, onClick && 'cursor_type_pointer'),
94
+ className: clsx__default.default(className, 'avatar', shapeClass, mode && `avatar_mode_${mode}`, size && `avatar_size_${size}`, type && `avatar_type_${type}`, onClick && 'cursor_type_pointer'),
94
95
  onClick: onClick
95
96
  }, /*#__PURE__*/React__default.default.createElement("div", {
96
97
  className: clsx__default.default('avatar__wrapper', fillClass, fillHoverClass)
@@ -40,6 +40,7 @@ function Badge(props) {
40
40
  appearance,
41
41
  className,
42
42
  children,
43
+ mode,
43
44
  textColor,
44
45
  textSize,
45
46
  value
@@ -80,7 +81,7 @@ function Badge(props) {
80
81
  styles: badgeStyles
81
82
  } = useStyles.useStyles(props);
82
83
  return /*#__PURE__*/React__default.default.createElement("div", {
83
- className: clsx__default.default(className, 'badge', !value && 'badge_type_status', borderColorClass, borderColorHoverClass, borderWidthClass, borderTypeClass, fillClass || badgeConfig.appearance[appearance] && `fill_${badgeConfig.appearance[appearance].fill}`?.replace(/([A-Z])/g, '-$1').toLowerCase(), positionClass, sizeClass, shapeClass),
84
+ className: clsx__default.default(className, 'badge', !value && 'badge_type_status', mode && `badge_mode_${mode}`, borderColorClass, borderColorHoverClass, borderWidthClass, borderTypeClass, fillClass || badgeConfig.appearance[appearance] && `fill_${badgeConfig.appearance[appearance].fill}`?.replace(/([A-Z])/g, '-$1').toLowerCase(), positionClass, sizeClass, shapeClass),
84
85
  style: badgeStyles
85
86
  }, children || value && /*#__PURE__*/React__default.default.createElement(index.Text, {
86
87
  size: textSize,
@@ -71,6 +71,7 @@ function Cell(props) {
71
71
  valueTag,
72
72
  after,
73
73
  before,
74
+ mode,
74
75
  size,
75
76
  value,
76
77
  valueTextSize,
@@ -149,7 +150,7 @@ function Cell(props) {
149
150
  propsKey: 'width'
150
151
  });
151
152
  return /*#__PURE__*/React__default.default.createElement("div", {
152
- className: clsx__default.default(className, 'cell', size && `cell_size_${size}`, set && `cell_set_${set}`, bgFillClass, bgFillHoverClass, isActive && bgFillActiveClass, isDisabled && bgFillDisabledClass, bgShapeClass, widthClass, zeroPadding && 'cell_reset-padding', zeroGap && 'cell_reset-gap', reverse && 'cell_reverse'),
153
+ className: clsx__default.default(className, 'cell', mode && `cell_mode_${mode}`, size && `cell_size_${size}`, set && `cell_set_${set}`, bgFillClass, bgFillHoverClass, isActive && bgFillActiveClass, isDisabled && bgFillDisabledClass, bgShapeClass, widthClass, zeroPadding && 'cell_reset-padding', zeroGap && 'cell_reset-gap', reverse && 'cell_reverse'),
153
154
  onClick: onClick,
154
155
  onMouseEnter: onMouseEnter
155
156
  }, before && /*#__PURE__*/React__default.default.createElement("div", {
@@ -40,6 +40,7 @@ function Checkbox(props) {
40
40
  after,
41
41
  state,
42
42
  id,
43
+ tag: Tag,
43
44
  className,
44
45
  checked,
45
46
  disabled,
@@ -53,7 +54,8 @@ function Checkbox(props) {
53
54
  labelTextColor,
54
55
  onBlur,
55
56
  onChange,
56
- onFocus
57
+ onFocus,
58
+ value
57
59
  } = props;
58
60
  const fillClass = useDeviceTargetClass.useDeviceTargetClass(props, {
59
61
  prefix: 'fill_',
@@ -91,9 +93,13 @@ function Checkbox(props) {
91
93
  prefix: 'border-color_',
92
94
  propsKey: checked ? 'stateBorderColorDisabledChecked' : 'stateBorderColorDisabled'
93
95
  });
94
- return /*#__PURE__*/React__default.default.createElement("label", {
95
- htmlFor: id,
96
- className: clsx__default.default(className, 'checkbox', fillClass, shapeClass)
96
+ const widthClass = useDeviceTargetClass.useDeviceTargetClass(props, {
97
+ prefix: 'width_',
98
+ propsKey: 'width'
99
+ });
100
+ return /*#__PURE__*/React__default.default.createElement(Tag, {
101
+ className: clsx__default.default(className, 'checkbox', fillClass, shapeClass, widthClass),
102
+ htmlFor: Tag === 'label' && id
97
103
  }, before, /*#__PURE__*/React__default.default.createElement("div", {
98
104
  className: clsx__default.default('checkbox__item', stateCheckmarkFillClass)
99
105
  }, /*#__PURE__*/React__default.default.createElement("input", {
@@ -102,6 +108,7 @@ function Checkbox(props) {
102
108
  disabled: disabled,
103
109
  id: id,
104
110
  type: "checkbox",
111
+ value: value,
105
112
  onBlur: onBlur,
106
113
  onChange: onChange,
107
114
  onFocus: onFocus
@@ -117,18 +124,35 @@ function Checkbox(props) {
117
124
  }, label), desc && /*#__PURE__*/React__default.default.createElement(index.Text, {
118
125
  className: "checkbox__desc",
119
126
  size: descTextSize,
120
- textWeight: descTextWidth,
121
- textColor: descTextColor
122
- }, desc), after);
127
+ textColor: descTextColor,
128
+ textWeight: descTextWidth
129
+ }, desc), after && /*#__PURE__*/React__default.default.createElement("div", {
130
+ className: "checkbox__after"
131
+ }, after));
123
132
  }
124
133
  Checkbox.propTypes = {
125
- className: PropTypes__default.default.string
134
+ className: PropTypes__default.default.string,
135
+ tag: PropTypes__default.default.string
136
+ };
137
+ Checkbox.defaultProps = {
138
+ tag: 'label'
126
139
  };
127
140
  Checkbox.__docgenInfo = {
128
141
  "description": "",
129
142
  "methods": [],
130
143
  "displayName": "Checkbox",
131
144
  "props": {
145
+ "tag": {
146
+ "defaultValue": {
147
+ "value": "'label'",
148
+ "computed": false
149
+ },
150
+ "description": "",
151
+ "type": {
152
+ "name": "string"
153
+ },
154
+ "required": false
155
+ },
132
156
  "className": {
133
157
  "description": "",
134
158
  "type": {
@@ -600,7 +600,9 @@ Flex.__docgenInfo = {
600
600
  function FlexItem(props) {
601
601
  const {
602
602
  children,
603
- className
603
+ className,
604
+ tag: Tag,
605
+ htmlFor
604
606
  } = props;
605
607
  const alignSelfClass = useDeviceTargetClass.useDeviceTargetClass(props, {
606
608
  prefix: 'flex__item_align-self_',
@@ -630,6 +632,10 @@ function FlexItem(props) {
630
632
  prefix: 'fill_',
631
633
  propsKey: 'fill'
632
634
  });
635
+ const fillHoverClass = useDeviceTargetClass.useDeviceTargetClass(props, {
636
+ prefix: 'fill_hover_',
637
+ propsKey: 'fillHover'
638
+ });
633
639
  const widthClass = useDeviceTargetClass.useDeviceTargetClass(props, {
634
640
  prefix: 'resize-horizontal_',
635
641
  propsKey: 'width'
@@ -645,8 +651,9 @@ function FlexItem(props) {
645
651
  const {
646
652
  styles: flexItemStyles
647
653
  } = useStyles.useStyles(props);
648
- return /*#__PURE__*/React__default.default.createElement("div", {
649
- className: clsx__default.default(className, 'flex__item', positionClass, alignItemsClass, alignSelfClass, directionClass, fillClass, growClass, justifyContentClass, shapeClass, widthClass, wrapClass),
654
+ return /*#__PURE__*/React__default.default.createElement(Tag, {
655
+ className: clsx__default.default(className, 'flex__item', positionClass, alignItemsClass, alignSelfClass, directionClass, fillClass, fillHoverClass, growClass, justifyContentClass, shapeClass, widthClass, wrapClass),
656
+ htmlFor: htmlFor,
650
657
  style: flexItemStyles
651
658
  }, children);
652
659
  }
@@ -706,11 +713,21 @@ FlexItem.propTypes = {
706
713
  wrapMobile: PropTypes__default.default.oneOf(flexWrap.default),
707
714
  wrapTablet: PropTypes__default.default.oneOf(flexWrap.default)
708
715
  };
716
+ FlexItem.defaultProps = {
717
+ tag: 'div'
718
+ };
709
719
  FlexItem.__docgenInfo = {
710
720
  "description": "",
711
721
  "methods": [],
712
722
  "displayName": "FlexItem",
713
723
  "props": {
724
+ "tag": {
725
+ "defaultValue": {
726
+ "value": "'div'",
727
+ "computed": false
728
+ },
729
+ "required": false
730
+ },
714
731
  "alignItems": {
715
732
  "description": "",
716
733
  "type": {
@@ -808,6 +808,10 @@ function GridItem(props) {
808
808
  prefix: 'fill_',
809
809
  propsKey: 'fill'
810
810
  });
811
+ const fillHoverClass = useDeviceTargetClass.useDeviceTargetClass(props, {
812
+ prefix: 'fill_hover_',
813
+ propsKey: 'fillHover'
814
+ });
811
815
  const gapClass = useDeviceTargetClass.useDeviceTargetClass(props, {
812
816
  prefix: 'gap_',
813
817
  propsKey: 'gap'
@@ -828,7 +832,7 @@ function GridItem(props) {
828
832
  styles: gridItemStyles
829
833
  } = useStyles.useStyles(props);
830
834
  return /*#__PURE__*/React__default.default.createElement("div", {
831
- className: clsx__default.default(className, 'grid__item', orderClass, fillClass, alignSelfClass, justifySelfClass, columnStartClass, columnEndClass, columnSpanClass, rowStartClass, rowEndClass, rowSpanClass, directionClass, gapClass, rowGapClass, columnGapClass),
835
+ className: clsx__default.default(className, 'grid__item', orderClass, fillClass, fillHoverClass, alignSelfClass, justifySelfClass, columnStartClass, columnEndClass, columnSpanClass, rowStartClass, rowEndClass, rowSpanClass, directionClass, gapClass, rowGapClass, columnGapClass),
832
836
  "data-tour": dataTour,
833
837
  id: id,
834
838
  style: gridItemStyles,
@@ -32,6 +32,8 @@ function Group(props) {
32
32
  children,
33
33
  className,
34
34
  horizontalScroll,
35
+ tag: Tag,
36
+ htmlFor,
35
37
  set,
36
38
  style,
37
39
  dataTour,
@@ -113,9 +115,10 @@ function Group(props) {
113
115
  styles: groupStyles,
114
116
  wrapper: groupWrapperStyles
115
117
  } = useStyles.useStyles(props);
116
- return /*#__PURE__*/React__default.default.createElement("div", {
118
+ return /*#__PURE__*/React__default.default.createElement(Tag, {
117
119
  className: clsx__default.default(className, 'group', widthClass, heightClass, columnsClass, contentAlignClass, alignDirectionClass, directionClass, alignClass, fillClass, fillHoverClass, set && `group_set_${set}`, horizontalScroll && 'group_type_horizontal_scroll', stackingClass, wrapClass, growClass, shapeClass, borderColorClass, borderWidthClass, borderTypeClass, elevationClass, justifyContentClass),
118
120
  "data-tour": dataTour,
121
+ htmlFor: htmlFor,
119
122
  id: id,
120
123
  style: Object.assign({}, groupStyles, style),
121
124
  onClick: onClick
@@ -140,6 +143,7 @@ Group.propTypes = {
140
143
  contentAlignDesktop: PropTypes__default.default.oneOf([null, 'center']),
141
144
  contentAlignMobile: PropTypes__default.default.oneOf([null, 'center']),
142
145
  contentAlignTablet: PropTypes__default.default.oneOf([null, 'center']),
146
+ tag: PropTypes__default.default.string,
143
147
  stacking: PropTypes__default.default.oneOf(stacking.default),
144
148
  stackingDesktop: PropTypes__default.default.oneOf(stacking.default),
145
149
  stackingMobile: PropTypes__default.default.oneOf(stacking.default),
@@ -166,13 +170,28 @@ Group.propTypes = {
166
170
  columnsTablet: PropTypes__default.default.number,
167
171
  set: PropTypes__default.default.string,
168
172
  horizontalScroll: PropTypes__default.default.bool,
169
- onClick: PropTypes__default.default.func
173
+ onClick: PropTypes__default.default.func,
174
+ htmlFor: PropTypes__default.default.oneOfType([PropTypes__default.default.string, PropTypes__default.default.number])
175
+ };
176
+ Group.defaultProps = {
177
+ tag: 'div'
170
178
  };
171
179
  Group.__docgenInfo = {
172
180
  "description": "",
173
181
  "methods": [],
174
182
  "displayName": "Group",
175
183
  "props": {
184
+ "tag": {
185
+ "defaultValue": {
186
+ "value": "'div'",
187
+ "computed": false
188
+ },
189
+ "description": "",
190
+ "type": {
191
+ "name": "string"
192
+ },
193
+ "required": false
194
+ },
176
195
  "id": {
177
196
  "description": "",
178
197
  "type": {
@@ -542,6 +561,18 @@ Group.__docgenInfo = {
542
561
  "name": "func"
543
562
  },
544
563
  "required": false
564
+ },
565
+ "htmlFor": {
566
+ "description": "",
567
+ "type": {
568
+ "name": "union",
569
+ "value": [{
570
+ "name": "string"
571
+ }, {
572
+ "name": "number"
573
+ }]
574
+ },
575
+ "required": false
545
576
  }
546
577
  }
547
578
  };
@@ -34,6 +34,7 @@ function Image(props) {
34
34
  className,
35
35
  imageWrapperClassName,
36
36
  imageClassName,
37
+ mode,
37
38
  overlay,
38
39
  src,
39
40
  title,
@@ -85,16 +86,21 @@ function Image(props) {
85
86
  prefix: 'border-color-image_',
86
87
  propsKey: 'borderColorImage'
87
88
  });
89
+ const fillClass = useDeviceTargetClass.useDeviceTargetClass(props, {
90
+ prefix: 'fill_',
91
+ propsKey: 'fill'
92
+ });
93
+ const fillHoverClass = useDeviceTargetClass.useDeviceTargetClass(props, {
94
+ prefix: 'fill_hover_',
95
+ propsKey: 'fillHover'
96
+ });
88
97
  const {
89
- // left
90
98
  styles,
91
- // leftImageWrapper
92
99
  wrapper: wrapperStyles,
93
- // leftImage
94
100
  image: imageStyles
95
101
  } = useStyles.useStyles(props);
96
102
  return /*#__PURE__*/React__default.default.createElement("div", {
97
- className: clsx__default.default(className, 'image', type && `image_type_${type}`, cursorClass, horizontalAlignClass, verticalAlignClass, shapeClass, resizeModeClass, widthClass, heightClass),
103
+ className: clsx__default.default(className, 'image', mode && `image_mode_${mode}`, type && `image_type_${type}`, cursorClass, horizontalAlignClass, verticalAlignClass, shapeClass, fillClass, fillHoverClass, resizeModeClass, widthClass, heightClass),
98
104
  onClick: onClick,
99
105
  style: styles
100
106
  }, before, /*#__PURE__*/React__default.default.createElement("div", {
@@ -48,6 +48,7 @@ function Label(props) {
48
48
  labelTextWrap,
49
49
  labelTextColor,
50
50
  labelTextColorHover,
51
+ mode,
51
52
  set,
52
53
  before,
53
54
  after,
@@ -104,7 +105,7 @@ function Label(props) {
104
105
  styles: labelStyles
105
106
  } = useStyles.useStyles(props);
106
107
  return /*#__PURE__*/React__default.default.createElement("div", {
107
- className: clsx__default.default(className, 'label', fillClass || labelConfig.appearance[appearance] && `fill_${labelConfig.appearance[appearance].fill}`.replace(/([A-Z])/g, '-$1').toLowerCase(), fillHoverClass || labelConfig.appearance[appearance] && `fill_hover_${labelConfig.appearance[appearance].fillHover}`.replace(/([A-Z])/g, '-$1').toLowerCase(), shapeClass, borderClass, borderTypeClass, sizeClass, wrapClass, widthClass, alignDirectionClass, alignClass, textAlignClass, type && `label_type_${type}`, set && `label_set_${set}`, onClick && (cursor || 'cursor_type_pointer')),
108
+ className: clsx__default.default(className, 'label', fillClass || labelConfig.appearance[appearance] && `fill_${labelConfig.appearance[appearance].fill}`.replace(/([A-Z])/g, '-$1').toLowerCase(), fillHoverClass || labelConfig.appearance[appearance] && `fill_hover_${labelConfig.appearance[appearance].fillHover}`.replace(/([A-Z])/g, '-$1').toLowerCase(), shapeClass, borderClass, borderTypeClass, sizeClass, wrapClass, widthClass, alignDirectionClass, alignClass, textAlignClass, type && `label_type_${type}`, set && `label_set_${set}`, mode && `label_mode_${mode}`, onClick && (cursor || 'cursor_type_pointer')),
108
109
  "data-tour": dataTour,
109
110
  style: labelStyles,
110
111
  onClick: onClick
@@ -35,9 +35,10 @@ var clsx__default = /*#__PURE__*/_interopDefault(clsx);
35
35
  function Logo(props) {
36
36
  const {
37
37
  className,
38
- size,
39
- link,
40
38
  href,
39
+ link,
40
+ mode,
41
+ size,
41
42
  source,
42
43
  src
43
44
  } = props;
@@ -61,7 +62,7 @@ function Logo(props) {
61
62
  styles: logo
62
63
  } = useStyles.useStyles(props);
63
64
  return /*#__PURE__*/React__default.default.createElement("div", {
64
- className: clsx__default.default(className, 'logo', alignDirectionClass, alignClass, widthClass, alignItemsClass, size && `logo_size_${size}`),
65
+ className: clsx__default.default(className, 'logo', alignDirectionClass, alignClass, widthClass, alignItemsClass, size && `logo_size_${size}`, mode && `logo_mode_${mode}`),
65
66
  style: logo
66
67
  }, link || href ? /*#__PURE__*/React__default.default.createElement(index.LinkWrapper, {
67
68
  href: link || href
@@ -30,13 +30,14 @@ var clsx__default = /*#__PURE__*/_interopDefault(clsx);
30
30
  function Text(props) {
31
31
  const {
32
32
  after,
33
- dataTour,
34
33
  before,
35
34
  children,
36
35
  className,
37
36
  cursor,
38
- tag: Tag,
37
+ dataTour,
39
38
  htmlFor,
39
+ mode,
40
+ tag: Tag,
40
41
  type,
41
42
  onClick
42
43
  } = props;
@@ -88,7 +89,7 @@ function Text(props) {
88
89
  propsKey: 'width'
89
90
  });
90
91
  return /*#__PURE__*/React__default.default.createElement(Tag, {
91
- className: clsx__default.default(className, 'text', sizeClass, weightClass, textColorClass, textColorActiveClass, textColorHoverClass, textGradientClass, textStyleClass, textTruncateClass, textWrapClass, type && `text_type_${type}`, widthClass, cursorClass, onClick && (cursor || 'cursor_type_pointer')),
92
+ className: clsx__default.default(className, 'text', sizeClass, weightClass, textColorClass, textColorActiveClass, textColorHoverClass, textGradientClass, textStyleClass, textTruncateClass, textWrapClass, type && `text_type_${type}`, mode && `text_mode_${mode}`, widthClass, cursorClass, onClick && (cursor || 'cursor_type_pointer')),
92
93
  "data-tour": dataTour,
93
94
  htmlFor: htmlFor,
94
95
  style: textStyles,
@@ -42,6 +42,7 @@ function Title(props) {
42
42
  onClick
43
43
  } = props;
44
44
  const {
45
+ mode,
45
46
  size,
46
47
  sizeMobile,
47
48
  sizeTablet,
@@ -113,7 +114,7 @@ function Title(props) {
113
114
  return size;
114
115
  }, [isMobile, isTablet, isDesktop]);
115
116
  return /*#__PURE__*/React__default.default.createElement(Tag, {
116
- className: clsx__default.default(className, 'title', fillColorClass, size && `title_size_${size}`, textColorClass, textColorActiveClass, textColorHoverClass, typeClass, textGradientClass, textStyleClass, weightClass, textWrap && `word-wrap_${textWrap}`),
117
+ className: clsx__default.default(className, 'title', fillColorClass, size && `title_size_${size}`, mode && `title_mode_${mode}`, textColorClass, textColorActiveClass, textColorHoverClass, typeClass, textGradientClass, textStyleClass, weightClass, textWrap && `word-wrap_${textWrap}`),
117
118
  "data-tour": dataTour,
118
119
  onClick: onClick,
119
120
  style: titleStyles
@@ -1,4 +1,5 @@
1
1
  .accordion {
2
+ border-radius: var(--accordion-border-radius, 12px);
2
3
  &__wrapper {
3
4
  width: 100%;
4
5
  max-width: var(--max);
@@ -48,7 +49,7 @@
48
49
  min-width: 170px;
49
50
  display: flex;
50
51
  flex-flow: row wrap;
51
- gap: 8px;
52
+ gap: 14px;
52
53
  &__title {
53
54
  flex: 1;
54
55
  }
@@ -16,24 +16,32 @@
16
16
  }
17
17
  }
18
18
  .avatar {
19
- &_size {
20
- @each $size in 14, 16, 24, 32, 40, 48, 56, 60, 64, 72, 80, 96, 112, 144, 240 {
21
- &_$(size) {
22
- ^^&__wrapper {
23
- width: $(size)px;
24
- height: $(size)px;
25
- display: flex;
26
- justify-content: center;
27
- align-items: center;
28
- ^^^&__image {
29
- width: $(size)px;
30
- height: $(size)px;
31
- }
19
+ &&_mode {
20
+ &_skeleton {
21
+ ^^&__wrapper {
22
+ background-image: linear-gradient(
23
+ 90deg,
24
+ var(--color-surface-secondary),
25
+ var(--color-surface-tertiary),
26
+ var(--color-surface-secondary)
27
+ );
28
+ background-size: 200%;
29
+ animation: avatar-skeleton 3s infinite linear;
30
+ ^^^&__name {
31
+ color: transparent;
32
32
  }
33
33
  }
34
34
  }
35
35
  }
36
36
  }
37
+ @keyframes avatar-skeleton {
38
+ 0% {
39
+ background-position: 200%;
40
+ }
41
+ 100% {
42
+ background-position: -200%;
43
+ }
44
+ }
37
45
  .avatar {
38
46
  &_shape {
39
47
  &_circular {
@@ -56,3 +64,22 @@
56
64
  }
57
65
  }
58
66
  }
67
+ .avatar {
68
+ &_size {
69
+ @each $size in 14, 16, 24, 32, 40, 48, 56, 60, 64, 72, 80, 96, 112, 144, 240 {
70
+ &_$(size) {
71
+ ^^&__wrapper {
72
+ width: $(size)px;
73
+ height: $(size)px;
74
+ display: flex;
75
+ justify-content: center;
76
+ align-items: center;
77
+ ^^^&__image {
78
+ width: $(size)px;
79
+ height: $(size)px;
80
+ }
81
+ }
82
+ }
83
+ }
84
+ }
85
+ }
@@ -3,6 +3,41 @@
3
3
  justify-content: center;
4
4
  align-items: center;
5
5
  }
6
+ .badge {
7
+ &&_mode {
8
+ &_skeleton {
9
+ background-image: linear-gradient(
10
+ 90deg,
11
+ var(--color-surface-secondary),
12
+ var(--color-surface-tertiary),
13
+ var(--color-surface-secondary)
14
+ );
15
+ background-size: 200%;
16
+ animation: badge-skeleton 3s infinite linear;
17
+ ^^^^&.text {
18
+ color: transparent;
19
+ }
20
+ }
21
+ }
22
+ }
23
+ @keyframes badge-skeleton {
24
+ 0% {
25
+ background-position: 200%;
26
+ }
27
+ 100% {
28
+ background-position: -200%;
29
+ }
30
+ }
31
+ .badge {
32
+ &_shape {
33
+ &_rounded {
34
+ border-radius: var(--badge-shape-rounded, 6px);
35
+ }
36
+ &_circular {
37
+ border-radius: 50%;
38
+ }
39
+ }
40
+ }
6
41
  .badge {
7
42
  &_size {
8
43
  @each $size in xxs, xs, s, m, l, xl, xxl {
@@ -29,16 +64,6 @@
29
64
  }
30
65
  }
31
66
  }
32
- .badge {
33
- &_shape {
34
- &_rounded {
35
- border-radius: var(--badge-shape-rounded, 6px);
36
- }
37
- &_circular {
38
- border-radius: 50%;
39
- }
40
- }
41
- }
42
67
  :root {
43
68
  --badge-width-size-xxs: 16px;
44
69
  --badge-height-size-xxs: 16px;
@@ -38,6 +38,15 @@
38
38
  }
39
39
  }
40
40
  }
41
+ .cell {
42
+ &__wrapper {
43
+ &_shape {
44
+ &_rounded {
45
+ border-radius: var(--cell-border-radius, 6px);
46
+ }
47
+ }
48
+ }
49
+ }
41
50
  .cell {
42
51
  &&_state {
43
52
  &_active {
@@ -79,9 +88,41 @@
79
88
  }
80
89
  }
81
90
  }
91
+ .cell {
92
+ &&_mode {
93
+ &_skeleton {
94
+ ^^&__data {
95
+ ^^^&__title,
96
+ ^^^&__value {
97
+ color: transparent;
98
+ background-image: linear-gradient(
99
+ 90deg,
100
+ var(--color-surface-secondary),
101
+ var(--color-surface-tertiary),
102
+ var(--color-surface-secondary)
103
+ );
104
+ background-size: 200%;
105
+ border-radius: 6px;
106
+ animation: cell-skeleton 3s infinite linear;
107
+ }
108
+ }
109
+ }
110
+ }
111
+ }
112
+ @keyframes cell-skeleton {
113
+ 0% {
114
+ background-position: 200%;
115
+ }
116
+ 100% {
117
+ background-position: -200%;
118
+ }
119
+ }
82
120
  :root {
83
121
  --cell-size-s-padding: 6px;
122
+
84
123
  --cell-size-m-padding: 6px;
124
+
85
125
  --cell-size-l-padding: 6px;
126
+
86
127
  --cell-size-xl-padding: 12px;
87
128
  }
@@ -4,32 +4,32 @@
4
4
  grid-template-rows: auto auto;
5
5
  column-gap: 4px;
6
6
  &__item {
7
- position: relative;
8
- cursor: pointer;
7
+ min-width: 16px;
8
+ min-height: 16px;
9
9
  font-size: 0;
10
10
  line-height: 0;
11
+ position: relative;
11
12
  display: flex;
12
- min-height: 16px;
13
- min-width: 16px;
14
- grid-row-start: span 2;
15
13
  align-self: start;
14
+ cursor: pointer;
15
+ grid-row-start: span 3;
16
16
  ^&__input {
17
- cursor: pointer;
18
- appearance: none;
19
- border: 0;
20
- margin: 0;
17
+ width: 100%;
18
+ height: 100%;
21
19
  font-size: 0;
22
20
  line-height: 0;
21
+ margin: 0;
22
+ border: 0;
23
23
  position: absolute;
24
24
  left: 0;
25
25
  top: 0;
26
- width: 100%;
27
- height: 100%;
28
26
  z-index: 3;
27
+ cursor: pointer;
28
+ appearance: none;
29
29
  }
30
30
  ^&__state {
31
- flex: 1;
32
31
  display: flex;
32
+ flex: 1;
33
33
  z-index: 1;
34
34
  &_shape {
35
35
  &_rounded {
@@ -41,19 +41,19 @@
41
41
  }
42
42
  }
43
43
  ^&__state-checkmark {
44
- height: 8px;
45
44
  width: 5px;
46
- border-bottom-style: solid;
47
- border-bottom-width: 2px;
48
- border-right-style: solid;
49
- border-right-width: 2px;
45
+ height: 8px;
46
+ margin: -1px 0 0 0;
50
47
  position: absolute;
51
- z-index: 2;
48
+ display: none;
52
49
  left: 50%;
53
50
  top: 50%;
54
- margin: -1px 0 0 0;
51
+ z-index: 2;
55
52
  transform: translate(-50%, -50%) rotate(45deg);
56
- display: none;
53
+ border-bottom-style: solid;
54
+ border-bottom-width: 2px;
55
+ border-right-style: solid;
56
+ border-right-width: 2px;
57
57
  }
58
58
  }
59
59
  }
@@ -1,4 +1,5 @@
1
1
  .group {
2
+ display: block;
2
3
  transition: var(--group-transition);
3
4
  }
4
5
 
@@ -17,6 +17,31 @@
17
17
  }
18
18
  }
19
19
  }
20
+ .image {
21
+ &&_mode {
22
+ &_skeleton {
23
+ background-image: linear-gradient(
24
+ 90deg,
25
+ var(--color-surface-secondary),
26
+ var(--color-surface-tertiary),
27
+ var(--color-surface-secondary)
28
+ );
29
+ background-size: 200%;
30
+ animation: image-skeleton 3s infinite linear;
31
+ ^^&__item {
32
+ opacity: 0;
33
+ }
34
+ }
35
+ }
36
+ }
37
+ @keyframes image-skeleton {
38
+ 0% {
39
+ background-position: 200%;
40
+ }
41
+ 100% {
42
+ background-position: -200%;
43
+ }
44
+ }
20
45
  .image {
21
46
  &_resize-mode {
22
47
  &_cover {
@@ -42,12 +67,13 @@
42
67
  .image {
43
68
  &_shape {
44
69
  &_rounded {
70
+ border-radius: var(--image-shape-rounded, 12px);
45
71
  > ^^&__wrapper {
46
72
  width: 100%;
47
73
  height: 100%;
74
+ border-radius: var(--image-shape-rounded, 12px);
48
75
  position: relative;
49
76
  overflow: hidden;
50
- border-radius: var(--image-shape-rounded, 12px);
51
77
  & > ^^^&__item {
52
78
  width: 100%;
53
79
  height: 100%;
@@ -56,6 +82,7 @@
56
82
  }
57
83
  }
58
84
  &_circular {
85
+ border-radius: 50%;
59
86
  > ^^&__wrapper {
60
87
  width: 100%;
61
88
  height: 100%;
@@ -8,19 +8,32 @@
8
8
  line-height: 0;
9
9
  }
10
10
  }
11
-
12
11
  .label {
13
- &_size {
14
- @each $size in xxs, xs, s, m, l, xl, xxl {
15
- &_$(size) {
16
- ^^&__inner {
17
- padding: var(--label-size-$(size)-padding);
18
- }
12
+ &&_mode {
13
+ &_skeleton {
14
+ background-image: linear-gradient(
15
+ 90deg,
16
+ var(--color-surface-secondary),
17
+ var(--color-surface-tertiary),
18
+ var(--color-surface-secondary)
19
+ );
20
+ background-size: 200%;
21
+ animation: label-skeleton 3s infinite linear;
22
+ ^^&__label {
23
+ color: transparent;
19
24
  }
20
25
  }
21
26
  }
22
27
  }
23
-
28
+ @keyframes label-skeleton {
29
+ 0% {
30
+ background-position: 200%;
31
+ }
32
+ 100% {
33
+ background-position: -200%;
34
+ }
35
+ }
36
+ /* mode && `avatar_mode_${mode}`, */
24
37
  .label {
25
38
  &_shape {
26
39
  &_rounded {
@@ -36,7 +49,17 @@
36
49
  }
37
50
  }
38
51
  }
39
-
52
+ .label {
53
+ &_size {
54
+ @each $size in xxs, xs, s, m, l, xl, xxl {
55
+ &_$(size) {
56
+ ^^&__inner {
57
+ padding: var(--label-size-$(size)-padding);
58
+ }
59
+ }
60
+ }
61
+ }
62
+ }
40
63
  .label {
41
64
  &&_text-align {
42
65
  &_left {
@@ -56,7 +79,6 @@
56
79
  }
57
80
  }
58
81
  }
59
-
60
82
  .label {
61
83
  &&_width {
62
84
  &_fixed {
@@ -8,6 +8,39 @@
8
8
  }
9
9
  }
10
10
  }
11
+ .logo {
12
+ @each $val in stretch, flex-start, flex-end, center, baseline, auto {
13
+ &_align-items_$(val) {
14
+ align-items: $(val);
15
+ }
16
+ }
17
+ }
18
+ .logo {
19
+ &&_mode {
20
+ &_skeleton {
21
+ background-image: linear-gradient(
22
+ 90deg,
23
+ var(--color-surface-secondary),
24
+ var(--color-surface-tertiary),
25
+ var(--color-surface-secondary)
26
+ );
27
+ background-size: 200%;
28
+ border-radius: 6px;
29
+ animation: logo-skeleton 3s infinite linear;
30
+ ^^&__image {
31
+ opacity: 0;
32
+ }
33
+ }
34
+ }
35
+ }
36
+ @keyframes logo-skeleton {
37
+ 0% {
38
+ background-position: 200%;
39
+ }
40
+ 100% {
41
+ background-position: -200%;
42
+ }
43
+ }
11
44
  .logo {
12
45
  &_size {
13
46
  @each $size in s, m, l {
@@ -20,13 +53,6 @@
20
53
  }
21
54
  }
22
55
  }
23
- .logo {
24
- @each $val in stretch, flex-start, flex-end, center, baseline, auto {
25
- &_align-items_$(val) {
26
- align-items: $(val);
27
- }
28
- }
29
- }
30
56
  :root {
31
57
  --logo-size-l-width: 240px;
32
58
  --logo-size-l-height: 90px;
@@ -37,4 +63,3 @@
37
63
  --logo-size-s-width: 140px;
38
64
  --logo-size-s-height: 52px;
39
65
  }
40
-
@@ -1,4 +1,28 @@
1
1
  .text {}
2
+ .text {
3
+ &&&&_mode {
4
+ &_skeleton {
5
+ color: transparent;
6
+ background-image: linear-gradient(
7
+ 90deg,
8
+ var(--color-surface-secondary),
9
+ var(--color-surface-tertiary),
10
+ var(--color-surface-secondary)
11
+ );
12
+ background-size: 200%;
13
+ border-radius: 6px;
14
+ animation: text-skeleton 3s infinite linear;
15
+ }
16
+ }
17
+ }
18
+ @keyframes text-skeleton {
19
+ 0% {
20
+ background-position: 200%;
21
+ }
22
+ 100% {
23
+ background-position: -200%;
24
+ }
25
+ }
2
26
  .text_size {
3
27
  @each $sizeText in xxs, xs, s, m, l, xl, xxl {
4
28
  &_$(sizeText) {
@@ -41,6 +41,30 @@
41
41
  margin: 0;
42
42
  }
43
43
  }
44
+ .title.title {
45
+ &_mode {
46
+ &_skeleton {
47
+ color: transparent;
48
+ background-image: linear-gradient(
49
+ 90deg,
50
+ var(--color-surface-secondary),
51
+ var(--color-surface-tertiary),
52
+ var(--color-surface-secondary)
53
+ );
54
+ background-size: 200%;
55
+ border-radius: 6px;
56
+ animation: title-skeleton 3s infinite linear;
57
+ }
58
+ }
59
+ }
60
+ @keyframes title-skeleton {
61
+ 0% {
62
+ background-position: 200%;
63
+ }
64
+ 100% {
65
+ background-position: -200%;
66
+ }
67
+ }
44
68
  .title {
45
69
  &&_type {
46
70
  &_accent {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@itcase/ui",
3
- "version": "1.0.93",
3
+ "version": "1.0.94",
4
4
  "description": "UI components (Modal, Loader, Popup, etc)",
5
5
  "keywords": [
6
6
  "Modal",