@sdata/web-vue 3.10.0 → 3.11.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.
@@ -0,0 +1,220 @@
1
+ /******** borderSize *******/
2
+ /******** borderStyle *******/
3
+ /******** radius *******/
4
+ /******** shadow distance *******/
5
+ /******** size *******/
6
+ /******** spacing *******/
7
+ /******** shadow *******/
8
+ /******** opacity *******/
9
+ /******** fontSize *******/
10
+ /******** fontWeight ********/
11
+ /******** Primary *******/
12
+ /******** success *******/
13
+ /******** warning *******/
14
+ /******** danger *******/
15
+ /******** link *******/
16
+ /******** radius *******/
17
+ /********* icon hover *********/
18
+ .sd-selectable-card {
19
+ position: relative;
20
+ box-sizing: border-box;
21
+ color: var(--sd-color-text-1);
22
+ background: var(--sd-color-bg-2);
23
+ border: 1px solid var(--sd-color-neutral-3);
24
+ border-radius: var(--sd-border-radius-large);
25
+ cursor: pointer;
26
+ transition: color 0.2s cubic-bezier(0, 0, 1, 1), background-color 0.2s cubic-bezier(0, 0, 1, 1), border-color 0.2s cubic-bezier(0, 0, 1, 1), box-shadow 0.2s cubic-bezier(0, 0, 1, 1);
27
+ }
28
+ .sd-selectable-card::after {
29
+ position: absolute;
30
+ background: transparent;
31
+ border-radius: inherit;
32
+ transition: background 0.2s cubic-bezier(0, 0, 1, 1);
33
+ content: "";
34
+ pointer-events: none;
35
+ inset: 0;
36
+ }
37
+ @media (hover: hover) {
38
+ .sd-selectable-card:not(.sd-selectable-card--disabled):hover::after {
39
+ background: rgba(0, 0, 0, 0.05);
40
+ }
41
+ }
42
+ .sd-selectable-card:not(.sd-selectable-card--disabled):active::after {
43
+ background: rgba(0, 0, 0, 0.1);
44
+ }
45
+ .sd-selectable-card:has(.sd-selectable-card-input:focus-visible) {
46
+ outline: 2px solid rgb(var(--sd-primary-6));
47
+ outline-offset: 2px;
48
+ }
49
+ .sd-selectable-card-body {
50
+ display: flex;
51
+ min-width: 0;
52
+ }
53
+ .sd-selectable-card-content {
54
+ display: flex;
55
+ flex: 1;
56
+ flex-direction: column;
57
+ min-width: 0;
58
+ }
59
+ .sd-selectable-card-figure {
60
+ display: flex;
61
+ flex: none;
62
+ align-items: center;
63
+ justify-content: center;
64
+ color: var(--sd-selectable-card-accent);
65
+ font-size: 2em;
66
+ }
67
+ .sd-selectable-card-title {
68
+ color: var(--sd-color-text-2);
69
+ font-size: 14px;
70
+ }
71
+ .sd-selectable-card-value {
72
+ color: var(--sd-color-text-1);
73
+ font-weight: 600;
74
+ line-height: 1.25;
75
+ }
76
+ .sd-selectable-card-description, .sd-selectable-card-default {
77
+ color: var(--sd-color-text-3);
78
+ font-size: 13px;
79
+ line-height: 1.5715;
80
+ }
81
+ .sd-selectable-card-actions {
82
+ position: relative;
83
+ z-index: 1;
84
+ display: flex;
85
+ flex-wrap: wrap;
86
+ gap: 8px;
87
+ }
88
+ .sd-selectable-card--layout-horizontal .sd-selectable-card-body {
89
+ flex-direction: row;
90
+ align-items: center;
91
+ }
92
+ .sd-selectable-card--layout-vertical .sd-selectable-card-body {
93
+ flex-direction: column;
94
+ }
95
+ .sd-selectable-card--align-center .sd-selectable-card-body, .sd-selectable-card--align-center .sd-selectable-card-content {
96
+ align-items: center;
97
+ text-align: center;
98
+ }
99
+ .sd-selectable-card--size-small {
100
+ padding: 12px;
101
+ }
102
+ .sd-selectable-card--size-small .sd-selectable-card-body, .sd-selectable-card--size-small .sd-selectable-card-content {
103
+ gap: 8px;
104
+ }
105
+ .sd-selectable-card--size-small .sd-selectable-card-value {
106
+ font-size: 16px;
107
+ }
108
+ .sd-selectable-card--size-medium {
109
+ padding: 16px;
110
+ }
111
+ .sd-selectable-card--size-medium .sd-selectable-card-body, .sd-selectable-card--size-medium .sd-selectable-card-content {
112
+ gap: 12px;
113
+ }
114
+ .sd-selectable-card--size-medium .sd-selectable-card-value {
115
+ font-size: 20px;
116
+ }
117
+ .sd-selectable-card--size-large {
118
+ padding: 24px;
119
+ }
120
+ .sd-selectable-card--size-large .sd-selectable-card-body, .sd-selectable-card--size-large .sd-selectable-card-content {
121
+ gap: 20px;
122
+ }
123
+ .sd-selectable-card--size-large .sd-selectable-card-value {
124
+ font-size: 24px;
125
+ }
126
+ .sd-selectable-card--color-red {
127
+ --sd-selectable-card-accent: rgb(var(--sd-red-6));
128
+ --sd-selectable-card-soft-bg: rgb(var(--sd-red-1));
129
+ --sd-selectable-card-border: rgb(var(--sd-red-6));
130
+ }
131
+ .sd-selectable-card--color-orangered {
132
+ --sd-selectable-card-accent: rgb(var(--sd-orangered-6));
133
+ --sd-selectable-card-soft-bg: rgb(var(--sd-orangered-1));
134
+ --sd-selectable-card-border: rgb(var(--sd-orangered-6));
135
+ }
136
+ .sd-selectable-card--color-orange {
137
+ --sd-selectable-card-accent: rgb(var(--sd-orange-6));
138
+ --sd-selectable-card-soft-bg: rgb(var(--sd-orange-1));
139
+ --sd-selectable-card-border: rgb(var(--sd-orange-6));
140
+ }
141
+ .sd-selectable-card--color-gold {
142
+ --sd-selectable-card-accent: rgb(var(--sd-gold-6));
143
+ --sd-selectable-card-soft-bg: rgb(var(--sd-gold-1));
144
+ --sd-selectable-card-border: rgb(var(--sd-gold-6));
145
+ }
146
+ .sd-selectable-card--color-lime {
147
+ --sd-selectable-card-accent: rgb(var(--sd-lime-6));
148
+ --sd-selectable-card-soft-bg: rgb(var(--sd-lime-1));
149
+ --sd-selectable-card-border: rgb(var(--sd-lime-6));
150
+ }
151
+ .sd-selectable-card--color-green {
152
+ --sd-selectable-card-accent: rgb(var(--sd-green-6));
153
+ --sd-selectable-card-soft-bg: rgb(var(--sd-green-1));
154
+ --sd-selectable-card-border: rgb(var(--sd-green-6));
155
+ }
156
+ .sd-selectable-card--color-cyan {
157
+ --sd-selectable-card-accent: rgb(var(--sd-cyan-6));
158
+ --sd-selectable-card-soft-bg: rgb(var(--sd-cyan-1));
159
+ --sd-selectable-card-border: rgb(var(--sd-cyan-6));
160
+ }
161
+ .sd-selectable-card--color-blue {
162
+ --sd-selectable-card-accent: rgb(var(--sd-blue-6));
163
+ --sd-selectable-card-soft-bg: rgb(var(--sd-blue-1));
164
+ --sd-selectable-card-border: rgb(var(--sd-blue-6));
165
+ }
166
+ .sd-selectable-card--color-sdblue {
167
+ --sd-selectable-card-accent: rgb(var(--sd-sdblue-6));
168
+ --sd-selectable-card-soft-bg: rgb(var(--sd-sdblue-1));
169
+ --sd-selectable-card-border: rgb(var(--sd-sdblue-6));
170
+ }
171
+ .sd-selectable-card--color-purple {
172
+ --sd-selectable-card-accent: rgb(var(--sd-purple-6));
173
+ --sd-selectable-card-soft-bg: rgb(var(--sd-purple-1));
174
+ --sd-selectable-card-border: rgb(var(--sd-purple-6));
175
+ }
176
+ .sd-selectable-card--color-pinkpurple {
177
+ --sd-selectable-card-accent: rgb(var(--sd-pinkpurple-6));
178
+ --sd-selectable-card-soft-bg: rgb(var(--sd-pinkpurple-1));
179
+ --sd-selectable-card-border: rgb(var(--sd-pinkpurple-6));
180
+ }
181
+ .sd-selectable-card--color-magenta {
182
+ --sd-selectable-card-accent: rgb(var(--sd-magenta-6));
183
+ --sd-selectable-card-soft-bg: rgb(var(--sd-magenta-1));
184
+ --sd-selectable-card-border: rgb(var(--sd-magenta-6));
185
+ }
186
+ .sd-selectable-card--color-gray {
187
+ --sd-selectable-card-accent: rgb(var(--sd-gray-6));
188
+ --sd-selectable-card-soft-bg: rgb(var(--sd-gray-2));
189
+ --sd-selectable-card-border: rgb(var(--sd-gray-6));
190
+ }
191
+ .sd-selectable-card--selected {
192
+ border-color: var(--sd-selectable-card-border);
193
+ box-shadow: inset 0 0 0 2px var(--sd-selectable-card-border);
194
+ }
195
+ .sd-selectable-card--selected.sd-selectable-card--soft {
196
+ color: var(--sd-selectable-card-accent);
197
+ background: var(--sd-selectable-card-soft-bg);
198
+ }
199
+ .sd-selectable-card--selected.sd-selectable-card--filled {
200
+ color: #fff;
201
+ background: var(--sd-selectable-card-border);
202
+ }
203
+ .sd-selectable-card--selected.sd-selectable-card--filled .sd-selectable-card-title, .sd-selectable-card--selected.sd-selectable-card--filled .sd-selectable-card-value, .sd-selectable-card--selected.sd-selectable-card--filled .sd-selectable-card-description, .sd-selectable-card--selected.sd-selectable-card--filled .sd-selectable-card-default, .sd-selectable-card--selected.sd-selectable-card--filled .sd-selectable-card-figure {
204
+ color: inherit;
205
+ }
206
+ .sd-selectable-card--disabled {
207
+ cursor: not-allowed;
208
+ opacity: 0.5;
209
+ }
210
+ .sd-selectable-card-input {
211
+ position: absolute;
212
+ width: 1px;
213
+ height: 1px;
214
+ margin: -1px;
215
+ padding: 0;
216
+ overflow: hidden;
217
+ white-space: nowrap;
218
+ border: 0;
219
+ clip-path: inset(50%);
220
+ }
@@ -0,0 +1,2 @@
1
+ import '../../style/index.scss';
2
+ import './index.scss';
@@ -0,0 +1,2 @@
1
+ import "../../style/index.scss";
2
+ import "./index.scss";
@@ -0,0 +1,202 @@
1
+ @use '@style/theme/index.scss' as theme;
2
+ @use 'sass:map';
3
+ @use 'sass:meta';
4
+ @use 'sass:string';
5
+ @use '@components/selectable-card/style/token.scss' as *;
6
+ @use '@components/tag/style/token.scss' as tag-token;
7
+
8
+ $selectable-card-prefix-cls: string.unquote('#{theme.$prefix}-selectable-card');
9
+ $colors:
10
+ 'red', 'orangered', 'orange', 'gold', 'lime', 'green', 'cyan', 'blue', 'sdblue', 'purple',
11
+ 'pinkpurple', 'magenta', 'gray';
12
+
13
+ @function tag-token-var($name) {
14
+ @return map.get(meta.module-variables('tag-token'), $name);
15
+ }
16
+
17
+ .#{$selectable-card-prefix-cls} {
18
+ position: relative;
19
+ box-sizing: border-box;
20
+ color: $selectable-card-color-value;
21
+ background: $selectable-card-color-bg;
22
+ border: $selectable-card-border-width solid $selectable-card-color-border;
23
+ border-radius: $selectable-card-border-radius;
24
+ cursor: pointer;
25
+ transition:
26
+ color theme.$transition-duration-2 theme.$transition-timing-function-linear,
27
+ background-color theme.$transition-duration-2 theme.$transition-timing-function-linear,
28
+ border-color theme.$transition-duration-2 theme.$transition-timing-function-linear,
29
+ box-shadow theme.$transition-duration-2 theme.$transition-timing-function-linear;
30
+
31
+ &::after {
32
+ position: absolute;
33
+ background: transparent;
34
+ border-radius: inherit;
35
+ transition: background theme.$transition-duration-2 theme.$transition-timing-function-linear;
36
+ content: '';
37
+ pointer-events: none;
38
+ inset: 0;
39
+ }
40
+
41
+ @media (hover: hover) {
42
+ &:not(&--disabled):hover::after {
43
+ background: $selectable-card-overlay-hover;
44
+ }
45
+ }
46
+
47
+ &:not(&--disabled):active::after {
48
+ background: $selectable-card-overlay-active;
49
+ }
50
+
51
+ &:has(&-input:focus-visible) {
52
+ outline: 2px solid $selectable-card-color-focus;
53
+ outline-offset: 2px;
54
+ }
55
+
56
+ &-body {
57
+ display: flex;
58
+ min-width: 0;
59
+ }
60
+
61
+ &-content {
62
+ display: flex;
63
+ flex: 1;
64
+ flex-direction: column;
65
+ min-width: 0;
66
+ }
67
+
68
+ &-figure {
69
+ display: flex;
70
+ flex: none;
71
+ align-items: center;
72
+ justify-content: center;
73
+ color: var(--sd-selectable-card-accent);
74
+ font-size: 2em;
75
+ }
76
+
77
+ &-title {
78
+ color: $selectable-card-color-title;
79
+ font-size: theme.$font-size-body-3;
80
+ }
81
+
82
+ &-value {
83
+ color: $selectable-card-color-value;
84
+ font-weight: theme.$font-weight-600;
85
+ line-height: 1.25;
86
+ }
87
+
88
+ &-description,
89
+ &-default {
90
+ color: $selectable-card-color-description;
91
+ font-size: theme.$font-size-body-2;
92
+ line-height: theme.$line-height-base;
93
+ }
94
+
95
+ &-actions {
96
+ position: relative;
97
+ z-index: 1;
98
+ display: flex;
99
+ flex-wrap: wrap;
100
+ gap: theme.$spacing-4;
101
+ }
102
+
103
+ &--layout-horizontal &-body {
104
+ flex-direction: row;
105
+ align-items: center;
106
+ }
107
+
108
+ &--layout-vertical &-body {
109
+ flex-direction: column;
110
+ }
111
+
112
+ &--align-center &-body,
113
+ &--align-center &-content {
114
+ align-items: center;
115
+ text-align: center;
116
+ }
117
+
118
+ @each $size, $padding, $gap,
119
+ $value-size
120
+ in (
121
+ (
122
+ small,
123
+ $selectable-card-size-small-padding,
124
+ $selectable-card-size-small-gap,
125
+ $selectable-card-size-small-value
126
+ ),
127
+ (
128
+ medium,
129
+ $selectable-card-size-medium-padding,
130
+ $selectable-card-size-medium-gap,
131
+ $selectable-card-size-medium-value
132
+ ),
133
+ (
134
+ large,
135
+ $selectable-card-size-large-padding,
136
+ $selectable-card-size-large-gap,
137
+ $selectable-card-size-large-value
138
+ )
139
+ )
140
+ {
141
+ &--size-#{$size} {
142
+ padding: $padding;
143
+ }
144
+
145
+ &--size-#{$size} &-body,
146
+ &--size-#{$size} &-content {
147
+ gap: $gap;
148
+ }
149
+
150
+ &--size-#{$size} &-value {
151
+ font-size: $value-size;
152
+ }
153
+ }
154
+
155
+ @each $color in $colors {
156
+ &--color-#{$color} {
157
+ --sd-selectable-card-accent: #{tag-token-var('tag-#{$color}-color-text')};
158
+ --sd-selectable-card-soft-bg: #{tag-token-var('tag-#{$color}-color-bg')};
159
+ --sd-selectable-card-border: #{tag-token-var('tag-#{$color}-bordered-color-border')};
160
+ }
161
+ }
162
+
163
+ &--selected {
164
+ border-color: var(--sd-selectable-card-border);
165
+ box-shadow: inset 0 0 0 2px var(--sd-selectable-card-border);
166
+ }
167
+
168
+ &--selected#{&}--soft {
169
+ color: var(--sd-selectable-card-accent);
170
+ background: var(--sd-selectable-card-soft-bg);
171
+ }
172
+
173
+ &--selected#{&}--filled {
174
+ color: #fff;
175
+ background: var(--sd-selectable-card-border);
176
+ }
177
+
178
+ &--selected#{&}--filled &-title,
179
+ &--selected#{&}--filled &-value,
180
+ &--selected#{&}--filled &-description,
181
+ &--selected#{&}--filled &-default,
182
+ &--selected#{&}--filled &-figure {
183
+ color: inherit;
184
+ }
185
+
186
+ &--disabled {
187
+ cursor: not-allowed;
188
+ opacity: $selectable-card-disabled-opacity;
189
+ }
190
+
191
+ &-input {
192
+ position: absolute;
193
+ width: 1px;
194
+ height: 1px;
195
+ margin: -1px;
196
+ padding: 0;
197
+ overflow: hidden;
198
+ white-space: nowrap;
199
+ border: 0;
200
+ clip-path: inset(50%);
201
+ }
202
+ }
@@ -0,0 +1,27 @@
1
+ @use '@style/theme/index.scss' as global;
2
+ @use 'sass:string';
3
+
4
+ @forward '@style/theme/index.scss';
5
+
6
+ $selectable-card-color-bg: var(string.unquote('#{global.$sd-cssvars-prefix}-color-bg-2'));
7
+ $selectable-card-color-border: var(string.unquote('#{global.$sd-cssvars-prefix}-color-neutral-3'));
8
+ $selectable-card-color-title: var(string.unquote('#{global.$sd-cssvars-prefix}-color-text-2'));
9
+ $selectable-card-color-value: var(string.unquote('#{global.$sd-cssvars-prefix}-color-text-1'));
10
+ $selectable-card-color-description: var(
11
+ string.unquote('#{global.$sd-cssvars-prefix}-color-text-3')
12
+ );
13
+ $selectable-card-color-focus: global.$color-primary-6;
14
+ $selectable-card-border-width: global.$border-1;
15
+ $selectable-card-border-radius: global.$radius-large;
16
+ $selectable-card-disabled-opacity: 0.5;
17
+ $selectable-card-overlay-hover: rgb(0 0 0 / 5%);
18
+ $selectable-card-overlay-active: rgb(0 0 0 / 10%);
19
+ $selectable-card-size-small-padding: global.$spacing-6;
20
+ $selectable-card-size-medium-padding: global.$spacing-7;
21
+ $selectable-card-size-large-padding: global.$spacing-9;
22
+ $selectable-card-size-small-gap: global.$spacing-4;
23
+ $selectable-card-size-medium-gap: global.$spacing-6;
24
+ $selectable-card-size-large-gap: global.$spacing-8;
25
+ $selectable-card-size-small-value: global.$font-size-title-1;
26
+ $selectable-card-size-medium-value: global.$font-size-title-2;
27
+ $selectable-card-size-large-value: global.$font-size-title-3;
@@ -0,0 +1,7 @@
1
+ import type { TagColor } from '../tag';
2
+ export type SelectableCardColor = TagColor;
3
+ export type SelectableCardVariant = 'outline' | 'soft' | 'filled';
4
+ export type SelectableCardSize = 'small' | 'medium' | 'large';
5
+ export type SelectableCardLayout = 'vertical' | 'horizontal';
6
+ export type SelectableCardAlign = 'start' | 'center';
7
+ export type SelectableCardSizeValue = number | string;
@@ -1136,6 +1136,9 @@
1136
1136
  "sd-select": {
1137
1137
  "attributes": []
1138
1138
  },
1139
+ "sd-selectable-card": {
1140
+ "attributes": []
1141
+ },
1139
1142
  "sd-line": {
1140
1143
  "attributes": [
1141
1144
  "rows",
@@ -2,7 +2,7 @@
2
2
  "$schema": "https://raw.githubusercontent.com/JetBrains/web-types/master/schema/web-types.json",
3
3
  "framework": "vue",
4
4
  "name": "@sdata/web-vue",
5
- "version": "3.9.0",
5
+ "version": "3.10.0",
6
6
  "contributions": {
7
7
  "html": {
8
8
  "types-syntax": "typescript",
@@ -6740,6 +6740,12 @@
6740
6740
  "events": [],
6741
6741
  "slots": []
6742
6742
  },
6743
+ {
6744
+ "name": "sd-selectable-card",
6745
+ "attributes": [],
6746
+ "events": [],
6747
+ "slots": []
6748
+ },
6743
6749
  {
6744
6750
  "name": "sd-line",
6745
6751
  "attributes": [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sdata/web-vue",
3
- "version": "3.10.0",
3
+ "version": "3.11.0",
4
4
  "description": "SD Design Vue: A Vue.js 3 UI Library",
5
5
  "keywords": [
6
6
  "sd",