@oardi/css-utils 0.52.0 → 0.53.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oardi/css-utils",
3
- "version": "0.52.0",
3
+ "version": "0.53.0",
4
4
  "author": "Ardian Shala",
5
5
  "homepage": "https://css-utils.oardi.com",
6
6
  "description": "Powerful set of semantic css classes with support for breakpoints, directions and spacings",
@@ -4,7 +4,7 @@
4
4
  --breadcrumb-padding-y: var(--spacer-0);
5
5
  --breadcrumb-divider-color: var(--text-subtle);
6
6
  --breadcrumb-item-padding-x: var(--spacer-2);
7
- --breadcrumb-item-active-color: var(--text-color-muted);
7
+ --breadcrumb-item-active-color: var(--text-muted);
8
8
 
9
9
  display: flex;
10
10
  flex-wrap: wrap;
@@ -133,7 +133,7 @@
133
133
  }
134
134
 
135
135
  .btn-text {
136
- --button-highlight: var(--highlight);
136
+ --button-highlight: var(--bg-highlight);
137
137
 
138
138
  color: var(--button-color);
139
139
  background-color: transparent;
@@ -1,7 +1,9 @@
1
1
  @layer components {
2
2
  .card {
3
3
  --card-header-padding: var(--spacer-3) var(--spacer-3) 0 var(--spacer-3);
4
- --card-header-border-bottom: 0;
4
+ --card-header-border-bottom-width: 0;
5
+ --card-header-border-bottom-color: var(--card-border-color);
6
+ --card-body-padding-top-after-header: var(--spacer-1);
5
7
  --card-body-padding: var(--spacer-3);
6
8
  --card-bg-color: var(--bg-surface);
7
9
  --card-border-width: var(--border-width);
@@ -9,43 +11,57 @@
9
11
  --card-border-radius: var(--border-radius);
10
12
  --card-bg-hover-color: var(--bg-surface-hover);
11
13
  --card-title-spacer-y: var(--spacer-2);
12
- --card-subtitle-color: var(--text-color-muted);
14
+ --card-subtitle-color: var(--text-muted);
13
15
 
14
16
  --card-transition-duration: var(--transition-duration, 0.2s);
17
+ --card-transition-easing: var(--transition-easing);
15
18
 
16
19
  background-color: var(--card-bg-color);
17
20
  border: var(--card-border-width) solid var(--card-border-color);
18
21
  border-radius: var(--card-border-radius);
19
22
 
20
23
  transition:
21
- color var(--card-transition-duration) ease,
22
- background-color var(--card-transition-duration) ease,
23
- box-shadow var(--card-transition-duration) ease,
24
- border-color var(--card-transition-duration) ease;
24
+ color var(--card-transition-duration) var(--card-transition-easing),
25
+ background-color var(--card-transition-duration) var(--card-transition-easing),
26
+ box-shadow var(--card-transition-duration) var(--card-transition-easing),
27
+ border-color var(--card-transition-duration) var(--card-transition-easing);
25
28
 
26
- &.action:hover {
27
- background-color: var(--card-bg-hover-color);
29
+ &.card-action {
30
+ cursor: pointer;
31
+
32
+ &:hover {
33
+ background-color: var(--card-bg-hover-color);
34
+ }
28
35
  }
29
36
 
30
37
  .card-title {
38
+ margin-top: 0;
31
39
  margin-bottom: var(--card-title-spacer-y);
32
40
  }
33
41
 
34
42
  .card-subtitle {
35
43
  color: var(--card-subtitle-color);
36
- margin-top: calc(-0.5 * var(--card-title-spacer-y));
44
+ margin-top: 0;
37
45
  margin-bottom: var(--card-title-spacer-y);
38
46
  }
39
47
 
48
+ .card-title + .card-subtitle {
49
+ margin-top: calc(-0.5 * var(--card-title-spacer-y));
50
+ }
51
+
40
52
  .card-header {
41
53
  padding: var(--card-header-padding);
42
- border-bottom: var(--card-header-border-bottom);
54
+ border-bottom: var(--card-header-border-bottom-width) solid var(--card-header-border-bottom-color);
43
55
 
44
- --card-title-spacer-y: 0;
56
+ --card-title-spacer-y: 0.5rem;
45
57
  }
46
58
 
47
59
  .card-body {
48
60
  padding: var(--card-body-padding);
49
61
  }
62
+
63
+ .card-header + .card-body {
64
+ padding-top: var(--card-body-padding-top-after-header);
65
+ }
50
66
  }
51
67
  }
@@ -1,66 +1,63 @@
1
1
  @use 'sass:map';
2
- @use '../theme.scss';
2
+ @use '../theme.scss' as theme;
3
3
 
4
4
  @layer components {
5
- %chip-base {
6
- --chip-label-font-size: 0.9rem;
7
- --chip-label-padding: 0 7px;
8
- --chip-border-radius: 16px;
5
+ .chip {
6
+ --chip-color: var(--primary);
7
+ --chip-color-hover: var(--primary-hover);
8
+ --chip-color-active: var(--primary-active);
9
+ --chip-on-color: var(--on-primary);
10
+
11
+ --chip-font-size: var(--font-size-sm);
12
+ --chip-padding-y: var(--spacer-0);
13
+ --chip-padding-x: var(--spacer-2);
14
+ --chip-border-radius: 9999px;
9
15
  --chip-border-width: var(--border-width);
10
- --chip-highlight: var(--highlight);
11
- --chip-transition-duration: var(--transition-duration, 0.2s);
16
+
17
+ --chip-highlight: var(--bg-highlight);
18
+
19
+ --chip-disabled-text-color: var(--disabled-text-color);
20
+ --chip-disabled-bg-color: var(--disabled-bg-color);
21
+ --chip-disabled-border-color: var(--disabled-border-color);
22
+
23
+ --chip-transition-duration: var(--transition-duration);
24
+ --chip-transition-easing: var(--transition-easing);
12
25
 
13
26
  display: inline-flex;
27
+ align-items: center;
28
+ justify-content: center;
29
+ gap: var(--spacer-1);
30
+ padding: var(--chip-padding-y) var(--chip-padding-x);
14
31
  border-width: var(--chip-border-width);
15
32
  border-style: solid;
16
- background-color: transparent;
17
33
  border-color: transparent;
34
+ border-radius: var(--chip-border-radius);
35
+ background-color: transparent;
18
36
  color: var(--text-color);
19
- font-size: var(--chip-label-font-size);
37
+ fill: currentColor;
38
+ font-size: var(--chip-font-size);
39
+ line-height: var(--line-height);
40
+ text-decoration: none;
41
+ white-space: nowrap;
42
+ touch-action: manipulation;
43
+ -webkit-tap-highlight-color: transparent;
20
44
 
21
45
  transition:
22
- color var(--chip-transition-duration) ease,
23
- background-color var(--chip-transition-duration) ease,
24
- box-shadow var(--chip-transition-duration) ease,
25
- border-color var(--chip-transition-duration) ease;
26
-
27
- -webkit-tap-highlight-color: transparent;
28
- touch-action: manipulation; // ios fix
46
+ color var(--chip-transition-duration) var(--chip-transition-easing),
47
+ background-color var(--chip-transition-duration) var(--chip-transition-easing),
48
+ box-shadow var(--chip-transition-duration) var(--chip-transition-easing),
49
+ border-color var(--chip-transition-duration) var(--chip-transition-easing);
29
50
 
30
51
  &:hover {
31
52
  cursor: pointer;
32
53
  text-decoration: none;
33
- }
34
-
35
- &.disabled:hover,
36
- .disabled:focus {
37
- cursor: not-allowed;
38
- }
39
- }
40
-
41
- .chip {
42
- @extend %chip-base;
43
-
44
- border-radius: var(--chip-border-radius);
45
- line-height: var(--line-height);
46
-
47
- &:hover {
48
54
  background-color: var(--chip-highlight);
49
55
  border-color: var(--chip-highlight);
50
56
  }
51
57
 
52
- &.disabled,
53
- &.disabled:hover {
54
- color: var(--disabled-text-color);
55
- outline: 0;
56
- background-color: var(--disabled-bg-color);
57
- border-color: var(--disabled-border-color);
58
- }
59
-
60
58
  .chip-label {
61
59
  display: inline-flex;
62
60
  flex-shrink: 0;
63
- padding: var(--chip-label-padding);
64
61
  margin: 0;
65
62
 
66
63
  & > * {
@@ -72,29 +69,60 @@
72
69
 
73
70
  @each $name, $value in map.get(theme.$theme, colors) {
74
71
  .chip-#{$name} {
75
- color: var(--on-#{$name});
76
- fill: var(--on-#{$name});
77
- background-color: var(--#{$name});
78
- border-color: var(--#{$name});
79
-
80
- &:hover,
81
- &:active {
82
- background-color: var(--#{$name}-hover);
83
- border-color: var(--#{$name}-hover);
84
- }
72
+ --chip-color: var(--#{$name});
73
+ --chip-color-hover: var(--#{$name}-hover);
74
+ --chip-color-active: var(--#{$name}-active);
75
+ --chip-on-color: var(--on-#{$name});
85
76
  }
77
+ }
86
78
 
87
- .chip-#{$name}-outline {
88
- color: var(--#{$name});
89
- background-color: transparent;
90
- border-color: var(--#{$name});
79
+ .chip-solid {
80
+ color: var(--chip-on-color);
81
+ background-color: var(--chip-color);
82
+ border-color: var(--chip-color);
91
83
 
92
- &:hover,
93
- &:active {
94
- color: var(--on-#{$name});
95
- background-color: var(--#{$name}-hover);
96
- border-color: var(--#{$name}-hover);
97
- }
84
+ &:hover,
85
+ &:active {
86
+ color: var(--chip-on-color);
87
+ background-color: var(--chip-color-hover);
88
+ border-color: var(--chip-color-hover);
89
+ }
90
+ }
91
+
92
+ .chip-outline {
93
+ color: var(--chip-color);
94
+ background-color: transparent;
95
+ border-color: var(--chip-color);
96
+
97
+ &:hover,
98
+ &:active {
99
+ color: var(--chip-on-color);
100
+ background-color: var(--chip-color-hover);
101
+ border-color: var(--chip-color-hover);
102
+ }
103
+ }
104
+
105
+ .chip-text {
106
+ color: var(--chip-color);
107
+ background-color: transparent;
108
+ border-color: transparent;
109
+
110
+ &:hover,
111
+ &:active {
112
+ background-color: var(--chip-highlight);
113
+ }
114
+ }
115
+
116
+ .chip {
117
+ &.disabled,
118
+ &:disabled,
119
+ &[disabled] {
120
+ cursor: not-allowed;
121
+ pointer-events: none;
122
+ outline: 0;
123
+ color: var(--chip-disabled-text-color);
124
+ background-color: var(--chip-disabled-bg-color);
125
+ border-color: var(--chip-disabled-border-color);
98
126
  }
99
127
  }
100
128
  }
@@ -1,38 +1,60 @@
1
1
  @layer components {
2
2
  .drawer {
3
- --drawer-border-right-color: var(--border-color);
3
+ --drawer-width: 20rem;
4
+ --drawer-z-index: 1045;
5
+
4
6
  --drawer-bg-color: var(--bg-surface);
5
7
 
8
+ --drawer-border-width: var(--border-width);
9
+ --drawer-border-color: var(--border-color);
10
+
11
+ --drawer-header-padding-y: var(--spacer-2);
12
+ --drawer-header-padding-x: var(--spacer-3);
13
+
14
+ --drawer-body-padding: var(--spacer-3);
15
+
16
+ --drawer-transition-duration: var(--transition-duration);
17
+ --drawer-transition-easing: var(--transition-easing);
18
+
19
+ position: fixed;
20
+ inset-block: 0;
21
+ inset-inline-start: 0;
22
+ z-index: var(--drawer-z-index);
6
23
  display: flex;
7
24
  flex-direction: column;
8
- position: fixed;
9
- top: 0;
10
- left: -100%;
25
+ justify-content: flex-start;
26
+ width: min(var(--drawer-width), 100%);
11
27
  height: 100dvh;
12
- width: min(20rem, 100%);
13
- z-index: 1045;
14
- border-right: 1px solid var(--drawer-border-right-color);
15
- justify-content: start;
16
28
  background-color: var(--drawer-bg-color);
17
- transition: left 250ms ease-out;
29
+ border-inline-end: var(--drawer-border-width) solid var(--drawer-border-color);
30
+ transform: translateX(-100%);
18
31
 
19
- &.open ~ .overlay {
20
- display: block;
32
+ transition: transform var(--drawer-transition-duration) var(--drawer-transition-easing);
33
+
34
+ &.is-open {
35
+ transform: translateX(0);
21
36
  }
22
37
 
23
- &.open {
24
- left: 0;
38
+ &.is-open ~ .overlay {
39
+ display: block;
25
40
  }
26
41
 
27
- .drawer-title-container {
42
+ .drawer-header {
28
43
  display: flex;
29
- padding: 0.5rem 1rem;
30
44
  align-items: center;
45
+ padding: var(--drawer-header-padding-y) var(--drawer-header-padding-x);
46
+ }
47
+
48
+ .drawer-title {
49
+ display: flex;
50
+ flex: 1;
51
+ margin: 0;
52
+ }
31
53
 
32
- .drawer-title {
33
- display: flex;
34
- flex: 1;
35
- }
54
+ .drawer-body {
55
+ flex: 1;
56
+ padding: var(--drawer-body-padding);
57
+ overflow: auto;
36
58
  }
37
59
  }
38
60
  }
@@ -3,23 +3,72 @@
3
3
  display: flex;
4
4
  flex-direction: column;
5
5
  gap: var(--spacer-2);
6
+ }
7
+
8
+ .expansion-panel {
9
+ --expansion-panel-header-padding-y: var(--spacer-3);
10
+ --expansion-panel-header-padding-x: var(--spacer-3);
11
+ --expansion-panel-header-icon-space: var(--spacer-5);
12
+ --expansion-panel-inner-padding: var(--spacer-3);
13
+
14
+ --expansion-panel-bg-color: var(--bg-surface);
15
+ --expansion-panel-header-bg-color: var(--bg-surface);
16
+ --expansion-panel-content-bg-color: var(--bg-surface);
17
+
18
+ --expansion-panel-border-width: var(--border-width);
19
+ --expansion-panel-border-color: var(--border-color);
20
+ --expansion-panel-border-radius: var(--border-radius);
21
+
22
+ --expansion-panel-icon-size: 2rem;
23
+ --expansion-panel-icon-inline-end: var(--spacer-2);
24
+ --expansion-panel-icon-closed: '+';
25
+ --expansion-panel-icon-open: '−';
26
+
27
+ --expansion-panel-content-max-height: 32rem;
28
+
29
+ --expansion-panel-focus-outline-width: var(--focus-outline-width);
30
+ --expansion-panel-focus-outline-style: var(--focus-outline-style);
31
+ --expansion-panel-focus-outline-color: var(--focus-outline-color);
32
+ --expansion-panel-focus-outline-offset: var(--focus-offset);
33
+
34
+ --expansion-panel-transition-duration: var(--transition-duration);
35
+ --expansion-panel-transition-easing: var(--transition-easing);
36
+ --expansion-panel-content-transition-duration: 0.25s;
37
+
38
+ color: var(--text-color);
39
+ background-color: var(--expansion-panel-bg-color);
40
+ border: var(--expansion-panel-border-width) solid var(--expansion-panel-border-color);
41
+ border-radius: var(--expansion-panel-border-radius);
42
+
43
+ transition:
44
+ color var(--expansion-panel-transition-duration) var(--expansion-panel-transition-easing),
45
+ background-color var(--expansion-panel-transition-duration) var(--expansion-panel-transition-easing),
46
+ box-shadow var(--expansion-panel-transition-duration) var(--expansion-panel-transition-easing),
47
+ border-color var(--expansion-panel-transition-duration) var(--expansion-panel-transition-easing);
48
+
49
+ /** for focus button header */
50
+ &:focus-within {
51
+ outline: var(--expansion-panel-focus-outline-width) var(--expansion-panel-focus-outline-style)
52
+ var(--expansion-panel-focus-outline-color);
53
+ outline-offset: var(--expansion-panel-focus-outline-offset);
54
+ }
6
55
 
7
- .expansion-panel {
8
- --expansion-panel-header-padding: 1.25rem 2.5rem 1.25rem 1.25rem;
9
- --expansion-panel-inner-padding: 1.25rem;
10
- --expansion-panel-border-color: var(--border-color);
11
- --expansion-panel-header-bg-color: var(--bg-surface);
12
- --expansion-panel-transition-duration: var(--transition-duration, 0.2s);
13
- --expansion-panel-transition-easing: var(--transition-easing, ease-out);
14
-
15
- --expansion-panel-focus-outline-width: var(--focus-outline-width);
16
- --expansion-panel-focus-outline-style: var(--focus-outline-style);
17
- --expansion-panel-focus-outline-color: var(--focus-outline-color);
18
-
19
- color: var(--text-color);
20
- border: 1px solid var(--expansion-panel-border-color);
21
- border-radius: var(--border-radius);
56
+ .expansion-panel-header {
57
+ position: relative;
58
+ display: flex;
59
+ align-items: center;
60
+ width: 100%;
61
+ padding-block: var(--expansion-panel-header-padding-y);
62
+ padding-inline-start: var(--expansion-panel-header-padding-x);
63
+ padding-inline-end: var(--expansion-panel-header-icon-space);
64
+ border: 0;
65
+ border-start-start-radius: var(--expansion-panel-border-radius);
66
+ border-start-end-radius: var(--expansion-panel-border-radius);
22
67
  background-color: var(--expansion-panel-header-bg-color);
68
+ color: inherit;
69
+ text-align: start;
70
+ font: inherit;
71
+ -webkit-tap-highlight-color: transparent;
23
72
 
24
73
  transition:
25
74
  color var(--expansion-panel-transition-duration) var(--expansion-panel-transition-easing),
@@ -27,88 +76,69 @@
27
76
  box-shadow var(--expansion-panel-transition-duration) var(--expansion-panel-transition-easing),
28
77
  border-color var(--expansion-panel-transition-duration) var(--expansion-panel-transition-easing);
29
78
 
30
- &:focus {
31
- outline: var(--expansion-panel-focus-outline-width) var(--expansion-panel-focus-outline-style)
32
- var(--expansion-panel-focus-outline-color);
33
- outline-offset: var(--focus-offset);
34
- }
35
-
36
- .expansion-panel-header {
79
+ &::after {
80
+ content: var(--expansion-panel-icon-closed);
81
+ position: absolute;
82
+ inset-inline-end: var(--expansion-panel-icon-inline-end);
37
83
  display: flex;
38
84
  align-items: center;
39
- padding: var(--expansion-panel-header-padding);
40
- border-top-left-radius: var(--border-radius);
41
- border-top-right-radius: var(--border-radius);
42
- position: relative;
43
- -webkit-tap-highlight-color: transparent;
44
-
45
- transition:
46
- color var(--expansion-panel-transition-duration) ease,
47
- background-color var(--expansion-panel-transition-duration) ease,
48
- box-shadow var(--expansion-panel-transition-duration) ease,
49
- border-color var(--expansion-panel-transition-duration) ease;
50
-
51
- &::after {
52
- content: '+';
53
- position: absolute;
54
- right: 16px;
55
- width: 32px;
56
- height: 32px;
57
- display: flex;
58
- align-items: center;
59
- justify-content: center;
60
- font-size: 1.75rem;
61
- transition: transform 0.5s;
62
- }
63
-
64
- &:hover {
65
- cursor: pointer;
66
- color: var(--primary);
67
- }
68
-
69
- &:focus {
70
- outline: 0;
71
- }
85
+ justify-content: center;
86
+ width: var(--expansion-panel-icon-size);
87
+ height: var(--expansion-panel-icon-size);
88
+ font-size: 1.75rem;
89
+ transition: transform var(--expansion-panel-transition-duration)
90
+ var(--expansion-panel-transition-easing);
72
91
  }
73
92
 
74
- .expansion-panel-content {
75
- --expansion-panel-content-bg-color: var(--bg-surface);
93
+ &:hover {
94
+ cursor: pointer;
95
+ color: var(--primary);
96
+ }
76
97
 
77
- background-color: var(--expansion-panel-content-bg-color);
78
- border-bottom-left-radius: var(--border-radius);
79
- border-bottom-right-radius: var(--border-radius);
98
+ &:focus {
99
+ outline: 0;
100
+ }
101
+ }
80
102
 
81
- max-height: 0;
82
- overflow: hidden;
83
- transition: max-height 0.25s ease-out;
103
+ .expansion-panel-content {
104
+ max-height: 0;
105
+ overflow: hidden;
106
+ opacity: 0;
107
+ background-color: var(--expansion-panel-content-bg-color);
108
+ border-end-start-radius: var(--expansion-panel-border-radius);
109
+ border-end-end-radius: var(--expansion-panel-border-radius);
84
110
 
85
- .expansion-panel-inner {
86
- padding: var(--expansion-panel-inner-padding);
87
- transition: transform 0.25s linear;
88
- transform: translateY(-10px);
89
- }
111
+ transition:
112
+ max-height var(--expansion-panel-content-transition-duration) var(--expansion-panel-transition-easing),
113
+ opacity var(--expansion-panel-transition-duration) var(--expansion-panel-transition-easing);
114
+
115
+ .expansion-panel-inner {
116
+ padding: var(--expansion-panel-inner-padding);
117
+ transform: translateY(-0.5rem);
118
+ transition: transform var(--expansion-panel-content-transition-duration)
119
+ var(--expansion-panel-transition-easing);
90
120
  }
121
+ }
91
122
 
92
- &.active {
93
- .expansion-panel-header::after {
94
- content: '-';
95
- }
123
+ &.is-open {
124
+ .expansion-panel-header::after {
125
+ content: var(--expansion-panel-icon-open);
126
+ }
96
127
 
97
- .expansion-panel-content {
98
- max-height: 500px;
99
- opacity: 1;
128
+ .expansion-panel-content {
129
+ max-height: var(--expansion-panel-content-max-height);
130
+ opacity: 1;
100
131
 
101
- .expansion-panel-inner {
102
- transform: translateY(0);
103
- }
132
+ .expansion-panel-inner {
133
+ transform: translateY(0);
104
134
  }
105
135
  }
136
+ }
106
137
 
107
- &:not(.active) {
108
- .expansion-panel-header {
109
- border-bottom-left-radius: var(--border-radius);
110
- border-bottom-right-radius: var(--border-radius);
111
- }
138
+ &:not(.is-open) {
139
+ .expansion-panel-header {
140
+ border-end-start-radius: var(--expansion-panel-border-radius);
141
+ border-end-end-radius: var(--expansion-panel-border-radius);
112
142
  }
113
143
  }
114
144
  }