ngx-strata 0.3.0 → 0.4.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/assets/icons/check.svg +1 -0
- package/assets/styles/components/accordion.scss +12 -1
- package/assets/styles/components/action-menu.scss +1 -1
- package/assets/styles/components/avatar.scss +48 -9
- package/assets/styles/components/badge.scss +134 -0
- package/assets/styles/components/button.scss +45 -0
- package/assets/styles/components/checkbox.scss +10 -2
- package/assets/styles/components/file-upload.scss +113 -0
- package/assets/styles/components/image-cropper.scss +201 -0
- package/assets/styles/components/input-field.scss +39 -9
- package/assets/styles/components/item.scss +1 -1
- package/assets/styles/components/modal.scss +106 -1
- package/assets/styles/components/notification.scss +29 -0
- package/assets/styles/components/otp.scss +132 -0
- package/assets/styles/components/pagination.scss +13 -3
- package/assets/styles/components/progress.scss +2 -2
- package/assets/styles/components/radio.scss +3 -2
- package/assets/styles/components/segmented-control.scss +43 -11
- package/assets/styles/components/select.scss +29 -6
- package/assets/styles/components/slider.scss +30 -2
- package/assets/styles/components/stepper.scss +378 -0
- package/assets/styles/components/table.scss +1 -1
- package/assets/styles/components/tabs.scss +1 -1
- package/assets/styles/components/toggle.scss +1 -0
- package/assets/styles/components/tooltip.scss +9 -6
- package/assets/styles/public-api.scss +6 -1
- package/dist/strata/strata.css +1 -1
- package/fesm2022/ngx-strata.mjs +3058 -1455
- package/fesm2022/ngx-strata.mjs.map +1 -1
- package/package.json +1 -1
- package/skills/ngx-strata/SKILL.md +43 -18
- package/skills/ngx-strata/components/accordion.md +9 -7
- package/skills/ngx-strata/components/avatar.md +22 -10
- package/skills/ngx-strata/components/badge.md +54 -0
- package/skills/ngx-strata/components/checkbox.md +30 -5
- package/skills/ngx-strata/components/file-upload.md +50 -0
- package/skills/ngx-strata/components/icon.md +12 -7
- package/skills/ngx-strata/components/image-cropper.md +83 -0
- package/skills/ngx-strata/components/modal.md +180 -31
- package/skills/ngx-strata/components/notification.md +50 -14
- package/skills/ngx-strata/components/otp.md +68 -0
- package/skills/ngx-strata/components/pagination.md +6 -3
- package/skills/ngx-strata/components/radio.md +30 -10
- package/skills/ngx-strata/components/segmented-control.md +40 -19
- package/skills/ngx-strata/components/single-select.md +47 -15
- package/skills/ngx-strata/components/slider.md +35 -6
- package/skills/ngx-strata/components/stepper.md +64 -0
- package/skills/ngx-strata/components/toggle.md +27 -6
- package/types/ngx-strata.d.ts +707 -338
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><path d="M9.9997 15.1709L19.1921 5.97852L20.6063 7.39273L9.9997 17.9993L3.63574 11.6354L5.04996 10.2212L9.9997 15.1709Z"></path></svg>
|
|
@@ -39,6 +39,10 @@ st-accordion-item {
|
|
|
39
39
|
height: 54px;
|
|
40
40
|
width: 100%;
|
|
41
41
|
margin-right: auto;
|
|
42
|
+
border: none;
|
|
43
|
+
background: transparent;
|
|
44
|
+
color: var(--st-color-text-primary);
|
|
45
|
+
font-family: inherit;
|
|
42
46
|
border-radius: var(--st-border-radius-sm);
|
|
43
47
|
padding-left: 16px;
|
|
44
48
|
padding-right: 16px;
|
|
@@ -47,9 +51,16 @@ st-accordion-item {
|
|
|
47
51
|
user-select: none;
|
|
48
52
|
font-size: 16px;
|
|
49
53
|
font-weight: 600;
|
|
54
|
+
text-align: left;
|
|
55
|
+
outline: none;
|
|
56
|
+
|
|
57
|
+
&:focus-visible {
|
|
58
|
+
outline: 2px solid var(--st-color-accent-default);
|
|
59
|
+
outline-offset: -2px;
|
|
60
|
+
}
|
|
50
61
|
|
|
51
62
|
&:hover {
|
|
52
|
-
background-color: var(--st-bg-
|
|
63
|
+
background-color: var(--st-color-bg-default);
|
|
53
64
|
cursor: pointer;
|
|
54
65
|
}
|
|
55
66
|
|
|
@@ -23,7 +23,7 @@ st-avatar {
|
|
|
23
23
|
color: var(--st-avatar-text-color);
|
|
24
24
|
fill: var(--st-avatar-text-color);
|
|
25
25
|
|
|
26
|
-
span {
|
|
26
|
+
> span {
|
|
27
27
|
font-weight: bold;
|
|
28
28
|
user-select: none;
|
|
29
29
|
}
|
|
@@ -33,6 +33,45 @@ st-avatar {
|
|
|
33
33
|
height: 100%;
|
|
34
34
|
object-fit: var(--st-avatar-object-fit);
|
|
35
35
|
}
|
|
36
|
+
|
|
37
|
+
&:has(> st-badge:not(.st-badge-placement-inline)) {
|
|
38
|
+
position: relative;
|
|
39
|
+
overflow: visible;
|
|
40
|
+
|
|
41
|
+
img {
|
|
42
|
+
border-radius: var(--avatar-size);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
> st-badge:not(.st-badge-placement-inline) {
|
|
47
|
+
position: absolute;
|
|
48
|
+
z-index: 1;
|
|
49
|
+
--st-badge-border-color: var(--st-current-bg-color, var(--st-color-bg-raised));
|
|
50
|
+
|
|
51
|
+
&.st-badge-placement-bottom-right {
|
|
52
|
+
bottom: 14%;
|
|
53
|
+
right: 14%;
|
|
54
|
+
transform: translate(50%, 50%);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
&.st-badge-placement-top-right {
|
|
58
|
+
top: 14%;
|
|
59
|
+
right: 14%;
|
|
60
|
+
transform: translate(50%, -50%);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
&.st-badge-placement-bottom-left {
|
|
64
|
+
bottom: 14%;
|
|
65
|
+
left: 14%;
|
|
66
|
+
transform: translate(-50%, 50%);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
&.st-badge-placement-top-left {
|
|
70
|
+
top: 14%;
|
|
71
|
+
left: 14%;
|
|
72
|
+
transform: translate(-50%, -50%);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
36
75
|
}
|
|
37
76
|
|
|
38
77
|
st-avatar.st-theme-success {
|
|
@@ -63,7 +102,7 @@ st-avatar.st-theme-brand {
|
|
|
63
102
|
st-avatar-stack.xs>st-avatar {
|
|
64
103
|
--avatar-size: 20px;
|
|
65
104
|
|
|
66
|
-
span {
|
|
105
|
+
> span {
|
|
67
106
|
font-size: 0.6rem !important;
|
|
68
107
|
}
|
|
69
108
|
}
|
|
@@ -71,7 +110,7 @@ st-avatar-stack.xs>st-avatar {
|
|
|
71
110
|
st-avatar.xs {
|
|
72
111
|
--avatar-size: 20px;
|
|
73
112
|
|
|
74
|
-
span {
|
|
113
|
+
> span {
|
|
75
114
|
font-size: 0.6rem;
|
|
76
115
|
}
|
|
77
116
|
}
|
|
@@ -79,7 +118,7 @@ st-avatar.xs {
|
|
|
79
118
|
st-avatar-stack.sm>st-avatar {
|
|
80
119
|
--avatar-size: 32px;
|
|
81
120
|
|
|
82
|
-
span {
|
|
121
|
+
> span {
|
|
83
122
|
font-size: 0.8rem !important;
|
|
84
123
|
}
|
|
85
124
|
}
|
|
@@ -87,7 +126,7 @@ st-avatar-stack.sm>st-avatar {
|
|
|
87
126
|
st-avatar.sm {
|
|
88
127
|
--avatar-size: 32px;
|
|
89
128
|
|
|
90
|
-
span {
|
|
129
|
+
> span {
|
|
91
130
|
font-size: 0.8rem;
|
|
92
131
|
}
|
|
93
132
|
}
|
|
@@ -95,7 +134,7 @@ st-avatar.sm {
|
|
|
95
134
|
st-avatar-stack.md>st-avatar {
|
|
96
135
|
--avatar-size: 48px;
|
|
97
136
|
|
|
98
|
-
span {
|
|
137
|
+
> span {
|
|
99
138
|
font-size: 1rem !important;
|
|
100
139
|
}
|
|
101
140
|
}
|
|
@@ -103,7 +142,7 @@ st-avatar-stack.md>st-avatar {
|
|
|
103
142
|
st-avatar.md {
|
|
104
143
|
--avatar-size: 48px;
|
|
105
144
|
|
|
106
|
-
span {
|
|
145
|
+
> span {
|
|
107
146
|
font-size: 1rem;
|
|
108
147
|
}
|
|
109
148
|
}
|
|
@@ -111,7 +150,7 @@ st-avatar.md {
|
|
|
111
150
|
st-avatar-stack.lg>st-avatar {
|
|
112
151
|
--avatar-size: 72px;
|
|
113
152
|
|
|
114
|
-
span {
|
|
153
|
+
> span {
|
|
115
154
|
font-size: 1.6rem !important;
|
|
116
155
|
}
|
|
117
156
|
}
|
|
@@ -119,7 +158,7 @@ st-avatar-stack.lg>st-avatar {
|
|
|
119
158
|
st-avatar.lg {
|
|
120
159
|
--avatar-size: 72px;
|
|
121
160
|
|
|
122
|
-
span {
|
|
161
|
+
> span {
|
|
123
162
|
font-size: 1.6rem;
|
|
124
163
|
}
|
|
125
164
|
}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
st-badge {
|
|
2
|
+
--st-badge-bg: var(--st-color-accent-default);
|
|
3
|
+
--st-badge-color: var(--st-color-text-on-accent);
|
|
4
|
+
--st-badge-border-color: var(--st-current-bg-color, transparent);
|
|
5
|
+
--st-badge-border-width: 2px;
|
|
6
|
+
--st-badge-height: 20px;
|
|
7
|
+
--st-badge-min-width: 20px;
|
|
8
|
+
--st-badge-padding-x: 6px;
|
|
9
|
+
--st-badge-font-size: var(--st-font-sm);
|
|
10
|
+
--st-badge-dot-size: var(--st-badge-height);
|
|
11
|
+
--st-badge-icon-size: 11px;
|
|
12
|
+
|
|
13
|
+
display: inline-flex;
|
|
14
|
+
align-items: center;
|
|
15
|
+
justify-content: center;
|
|
16
|
+
line-height: 1;
|
|
17
|
+
vertical-align: middle;
|
|
18
|
+
box-sizing: border-box;
|
|
19
|
+
border-radius: 9999px;
|
|
20
|
+
user-select: none;
|
|
21
|
+
white-space: nowrap;
|
|
22
|
+
font-weight: 600;
|
|
23
|
+
font-family: inherit;
|
|
24
|
+
|
|
25
|
+
background-color: var(--st-badge-bg);
|
|
26
|
+
color: var(--st-badge-color);
|
|
27
|
+
border: var(--st-badge-border-width) solid var(--st-badge-border-color);
|
|
28
|
+
|
|
29
|
+
height: var(--st-badge-height);
|
|
30
|
+
min-width: var(--st-badge-min-width);
|
|
31
|
+
padding: 0 var(--st-badge-padding-x);
|
|
32
|
+
font-size: var(--st-badge-font-size);
|
|
33
|
+
|
|
34
|
+
.st-badge-value {
|
|
35
|
+
font-size: var(--st-badge-font-size);
|
|
36
|
+
line-height: 1;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
&.st-badge-hidden {
|
|
40
|
+
display: none !important;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
&.st-badge-dot {
|
|
44
|
+
width: var(--st-badge-height);
|
|
45
|
+
height: var(--st-badge-height);
|
|
46
|
+
min-width: var(--st-badge-height);
|
|
47
|
+
max-width: var(--st-badge-height);
|
|
48
|
+
padding: 0;
|
|
49
|
+
border-radius: 50%;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
&.st-badge-icon-only {
|
|
53
|
+
width: var(--st-badge-height);
|
|
54
|
+
height: var(--st-badge-height);
|
|
55
|
+
min-width: var(--st-badge-height);
|
|
56
|
+
max-width: var(--st-badge-height);
|
|
57
|
+
padding: 0;
|
|
58
|
+
border-radius: 50%;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
st-icon {
|
|
62
|
+
width: var(--st-badge-icon-size);
|
|
63
|
+
height: var(--st-badge-icon-size);
|
|
64
|
+
display: inline-flex;
|
|
65
|
+
align-items: center;
|
|
66
|
+
justify-content: center;
|
|
67
|
+
|
|
68
|
+
svg {
|
|
69
|
+
width: 100%;
|
|
70
|
+
height: 100%;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
&.st-badge-xs {
|
|
75
|
+
--st-badge-height: 8px;
|
|
76
|
+
--st-badge-min-width: 8px;
|
|
77
|
+
width: 8px;
|
|
78
|
+
height: 8px;
|
|
79
|
+
min-width: 8px;
|
|
80
|
+
max-width: 8px;
|
|
81
|
+
padding: 0;
|
|
82
|
+
border-radius: 50%;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
&.st-badge-sm {
|
|
86
|
+
--st-badge-height: 14px;
|
|
87
|
+
--st-badge-min-width: 14px;
|
|
88
|
+
--st-badge-font-size: var(--st-font-xs);
|
|
89
|
+
--st-badge-padding-x: 4px;
|
|
90
|
+
--st-badge-icon-size: 8px;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
&.st-badge-md {
|
|
94
|
+
--st-badge-height: 20px;
|
|
95
|
+
--st-badge-min-width: 20px;
|
|
96
|
+
--st-badge-font-size: var(--st-font-sm);
|
|
97
|
+
--st-badge-padding-x: 6px;
|
|
98
|
+
--st-badge-icon-size: 11px;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
&.st-badge-accent {
|
|
102
|
+
--st-badge-bg: var(--st-color-accent-default);
|
|
103
|
+
--st-badge-color: var(--st-color-text-on-accent);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
&.st-badge-neutral {
|
|
107
|
+
--st-badge-bg: var(--st-color-control-bg);
|
|
108
|
+
--st-badge-color: var(--st-color-text-primary);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
&.st-badge-success {
|
|
112
|
+
--st-badge-bg: var(--st-color-feedback-success-default);
|
|
113
|
+
--st-badge-color: var(--st-color-text-inverse);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
&.st-badge-warning {
|
|
117
|
+
--st-badge-bg: var(--st-color-feedback-warning-subtle);
|
|
118
|
+
--st-badge-color: var(--st-color-feedback-warning-text);
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
&.st-badge-dot.st-badge-warning {
|
|
122
|
+
--st-badge-bg: var(--st-color-feedback-warning-default);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
&.st-badge-error {
|
|
126
|
+
--st-badge-bg: var(--st-color-feedback-error-default);
|
|
127
|
+
--st-badge-color: var(--st-color-text-inverse);
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
&.st-badge-info {
|
|
131
|
+
--st-badge-bg: var(--st-color-feedback-info-default);
|
|
132
|
+
--st-badge-color: var(--st-color-text-inverse);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
@@ -50,6 +50,51 @@ button[stButton] {
|
|
|
50
50
|
border-radius: var(--st-border-radius-sm);
|
|
51
51
|
background-color: var(--st-button-background-color);
|
|
52
52
|
|
|
53
|
+
&:has(> st-badge:not(.st-badge-placement-inline)) {
|
|
54
|
+
position: relative;
|
|
55
|
+
overflow: visible;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
> st-badge:not(.st-badge-placement-inline) {
|
|
59
|
+
--st-badge-border-color: var(--st-button-background-color);
|
|
60
|
+
|
|
61
|
+
&.st-badge-placement-top-right {
|
|
62
|
+
position: absolute;
|
|
63
|
+
top: 0;
|
|
64
|
+
right: 0;
|
|
65
|
+
transform: translate(50%, -50%);
|
|
66
|
+
z-index: 1;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
&.st-badge-placement-bottom-right {
|
|
70
|
+
position: absolute;
|
|
71
|
+
bottom: 0;
|
|
72
|
+
right: 0;
|
|
73
|
+
transform: translate(50%, 50%);
|
|
74
|
+
z-index: 1;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
&.st-badge-placement-top-left {
|
|
78
|
+
position: absolute;
|
|
79
|
+
top: 0;
|
|
80
|
+
left: 0;
|
|
81
|
+
transform: translate(-50%, -50%);
|
|
82
|
+
z-index: 1;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
&.st-badge-placement-bottom-left {
|
|
86
|
+
position: absolute;
|
|
87
|
+
bottom: 0;
|
|
88
|
+
left: 0;
|
|
89
|
+
transform: translate(-50%, 50%);
|
|
90
|
+
z-index: 1;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
> st-badge.st-badge-placement-inline {
|
|
95
|
+
margin-left: var(--st-space-2);
|
|
96
|
+
}
|
|
97
|
+
|
|
53
98
|
&.st-size-sm {
|
|
54
99
|
height: var(--st-interactive-element-height-sm);
|
|
55
100
|
font-size: 12px;
|
|
@@ -5,8 +5,9 @@ st-checkbox {
|
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
user-select: none;
|
|
8
|
-
display: flex;
|
|
8
|
+
display: inline-flex;
|
|
9
9
|
align-items: center;
|
|
10
|
+
min-height: var(--st-interactive-element-height-md);
|
|
10
11
|
gap: var(--st-size-xxs);
|
|
11
12
|
input {
|
|
12
13
|
position: absolute;
|
|
@@ -63,11 +64,18 @@ st-checkbox {
|
|
|
63
64
|
&:hover {
|
|
64
65
|
cursor: pointer;
|
|
65
66
|
.checkbox-visual {
|
|
66
|
-
background-color: var(--st-bg-
|
|
67
|
+
background-color: var(--st-color-bg-raised);
|
|
67
68
|
}
|
|
68
69
|
|
|
69
70
|
input:checked + .checkbox-visual {
|
|
70
71
|
background-color: var(--st-checkbox-checked-bg-hover-color);
|
|
71
72
|
}
|
|
72
73
|
}
|
|
74
|
+
|
|
75
|
+
&[data-disabled="true"],
|
|
76
|
+
&.disabled {
|
|
77
|
+
cursor: not-allowed;
|
|
78
|
+
opacity: 0.5;
|
|
79
|
+
pointer-events: none;
|
|
80
|
+
}
|
|
73
81
|
}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
st-file-upload {
|
|
2
|
+
--st-file-upload-bg: var(--st-color-bg-default);
|
|
3
|
+
--st-file-upload-border: var(--st-color-border-default);
|
|
4
|
+
--st-file-upload-text: var(--st-color-text-primary);
|
|
5
|
+
--st-file-upload-hint: var(--st-color-text-secondary);
|
|
6
|
+
--st-file-upload-hover-bg: var(--st-color-bg-raised);
|
|
7
|
+
--st-file-upload-hover-border: var(--st-color-accent-default);
|
|
8
|
+
--st-file-upload-active-border: var(--st-color-accent-default);
|
|
9
|
+
--st-file-upload-active-bg: var(--st-color-accent-subtle, var(--st-color-bg-raised));
|
|
10
|
+
--st-file-upload-icon-color: var(--st-color-text-secondary);
|
|
11
|
+
--st-file-upload-radius: 8px;
|
|
12
|
+
|
|
13
|
+
display: block;
|
|
14
|
+
position: relative;
|
|
15
|
+
box-sizing: border-box;
|
|
16
|
+
background-color: var(--st-file-upload-bg);
|
|
17
|
+
border: 2px dashed var(--st-file-upload-border);
|
|
18
|
+
border-radius: var(--st-file-upload-radius);
|
|
19
|
+
padding: var(--st-space-6) var(--st-space-4);
|
|
20
|
+
text-align: center;
|
|
21
|
+
cursor: pointer;
|
|
22
|
+
transition: border-color 0.15s ease, background-color 0.15s ease, transform 0.15s ease;
|
|
23
|
+
user-select: none;
|
|
24
|
+
outline: none;
|
|
25
|
+
|
|
26
|
+
&:hover:not(.st-disabled) {
|
|
27
|
+
background-color: var(--st-file-upload-hover-bg);
|
|
28
|
+
border-color: var(--st-file-upload-hover-border);
|
|
29
|
+
|
|
30
|
+
.st-file-upload-icon {
|
|
31
|
+
color: var(--st-color-accent-default);
|
|
32
|
+
transform: translateY(-2px);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
&:focus-visible:not(.st-disabled) {
|
|
37
|
+
outline: 2px solid var(--st-color-accent-default);
|
|
38
|
+
outline-offset: 2px;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
&.st-drag-over {
|
|
42
|
+
background-color: var(--st-file-upload-active-bg);
|
|
43
|
+
border-color: var(--st-file-upload-active-border);
|
|
44
|
+
border-style: solid;
|
|
45
|
+
transform: scale(1.01);
|
|
46
|
+
|
|
47
|
+
.st-file-upload-icon {
|
|
48
|
+
color: var(--st-color-accent-default);
|
|
49
|
+
transform: translateY(-4px) scale(1.1);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
&.st-disabled {
|
|
54
|
+
opacity: 0.5;
|
|
55
|
+
cursor: not-allowed;
|
|
56
|
+
pointer-events: none;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
.st-file-upload-input {
|
|
60
|
+
position: absolute;
|
|
61
|
+
width: 1px;
|
|
62
|
+
height: 1px;
|
|
63
|
+
padding: 0;
|
|
64
|
+
margin: -1px;
|
|
65
|
+
overflow: hidden;
|
|
66
|
+
clip: rect(0, 0, 0, 0);
|
|
67
|
+
white-space: nowrap;
|
|
68
|
+
border-width: 0;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
.st-file-upload-content {
|
|
72
|
+
display: flex;
|
|
73
|
+
flex-direction: column;
|
|
74
|
+
align-items: center;
|
|
75
|
+
justify-content: center;
|
|
76
|
+
gap: var(--st-space-3);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
.st-file-upload-icon-wrapper {
|
|
80
|
+
display: flex;
|
|
81
|
+
align-items: center;
|
|
82
|
+
justify-content: center;
|
|
83
|
+
width: 48px;
|
|
84
|
+
height: 48px;
|
|
85
|
+
border-radius: 50%;
|
|
86
|
+
background-color: var(--st-color-bg-raised);
|
|
87
|
+
transition: transform 0.2s ease;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
.st-file-upload-icon {
|
|
91
|
+
width: 24px;
|
|
92
|
+
height: 24px;
|
|
93
|
+
color: var(--st-file-upload-icon-color);
|
|
94
|
+
transition: color 0.2s ease, transform 0.2s ease;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
.st-file-upload-text {
|
|
98
|
+
display: flex;
|
|
99
|
+
flex-direction: column;
|
|
100
|
+
gap: var(--st-space-1);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
.st-file-upload-label {
|
|
104
|
+
font-size: 0.95rem;
|
|
105
|
+
font-weight: 500;
|
|
106
|
+
color: var(--st-file-upload-text);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
.st-file-upload-hint {
|
|
110
|
+
font-size: 0.8rem;
|
|
111
|
+
color: var(--st-file-upload-hint);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
st-image-cropper {
|
|
2
|
+
--st-image-cropper-bg: var(--st-color-bg-default);
|
|
3
|
+
--st-image-cropper-border: var(--st-color-border-default);
|
|
4
|
+
--st-image-cropper-mask-border: var(--st-color-accent-default);
|
|
5
|
+
--st-image-cropper-mask-backdrop: rgba(0, 0, 0, 0.55);
|
|
6
|
+
--st-image-cropper-radius: 8px;
|
|
7
|
+
|
|
8
|
+
display: block;
|
|
9
|
+
box-sizing: border-box;
|
|
10
|
+
background-color: var(--st-image-cropper-bg);
|
|
11
|
+
border: 1px solid var(--st-image-cropper-border);
|
|
12
|
+
border-radius: var(--st-image-cropper-radius);
|
|
13
|
+
overflow: hidden;
|
|
14
|
+
|
|
15
|
+
&.st-disabled {
|
|
16
|
+
opacity: 0.6;
|
|
17
|
+
pointer-events: none;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
.st-cropper-empty-state {
|
|
21
|
+
padding: var(--st-space-6) var(--st-space-4);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
.st-cropper-empty-placeholder {
|
|
25
|
+
display: flex;
|
|
26
|
+
flex-direction: column;
|
|
27
|
+
align-items: center;
|
|
28
|
+
justify-content: center;
|
|
29
|
+
gap: var(--st-space-3);
|
|
30
|
+
padding: var(--st-space-8) var(--st-space-4);
|
|
31
|
+
color: var(--st-color-text-secondary);
|
|
32
|
+
font-size: 0.9rem;
|
|
33
|
+
|
|
34
|
+
.st-cropper-placeholder-icon {
|
|
35
|
+
width: 40px;
|
|
36
|
+
height: 40px;
|
|
37
|
+
opacity: 0.6;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
.st-cropper-workspace {
|
|
42
|
+
display: flex;
|
|
43
|
+
flex-direction: column;
|
|
44
|
+
align-items: center;
|
|
45
|
+
width: 100%;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.st-cropper-viewport {
|
|
49
|
+
position: relative;
|
|
50
|
+
width: 100%;
|
|
51
|
+
background-color: #111418;
|
|
52
|
+
overflow: hidden;
|
|
53
|
+
display: flex;
|
|
54
|
+
flex-direction: column;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
.st-cropper-stage {
|
|
58
|
+
position: relative;
|
|
59
|
+
width: 100%;
|
|
60
|
+
height: calc(var(--st-cropper-mask-size, 240px) + var(--st-space-10));
|
|
61
|
+
min-height: 280px;
|
|
62
|
+
overflow: hidden;
|
|
63
|
+
cursor: grab;
|
|
64
|
+
user-select: none;
|
|
65
|
+
touch-action: none;
|
|
66
|
+
display: flex;
|
|
67
|
+
align-items: center;
|
|
68
|
+
justify-content: center;
|
|
69
|
+
|
|
70
|
+
.st-is-dragging & {
|
|
71
|
+
cursor: grabbing;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
.st-cropper-image-layer {
|
|
76
|
+
position: absolute;
|
|
77
|
+
inset: 0;
|
|
78
|
+
overflow: hidden;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
.st-cropper-image {
|
|
82
|
+
position: absolute;
|
|
83
|
+
left: 50%;
|
|
84
|
+
top: 50%;
|
|
85
|
+
transform-origin: center center;
|
|
86
|
+
max-width: none;
|
|
87
|
+
max-height: none;
|
|
88
|
+
pointer-events: none;
|
|
89
|
+
user-select: none;
|
|
90
|
+
will-change: transform;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
.st-cropper-mask {
|
|
94
|
+
position: absolute;
|
|
95
|
+
left: 50%;
|
|
96
|
+
top: 50%;
|
|
97
|
+
width: var(--st-cropper-mask-size, 240px);
|
|
98
|
+
height: var(--st-cropper-mask-size, 240px);
|
|
99
|
+
transform: translate(-50%, -50%);
|
|
100
|
+
pointer-events: none;
|
|
101
|
+
box-shadow: 0 0 0 9999px var(--st-image-cropper-mask-backdrop);
|
|
102
|
+
border: 2px solid var(--st-image-cropper-mask-border);
|
|
103
|
+
box-sizing: border-box;
|
|
104
|
+
|
|
105
|
+
&.st-crop-shape-circle {
|
|
106
|
+
border-radius: 50%;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
&.st-crop-shape-square {
|
|
110
|
+
border-radius: 4px;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
.st-cropper-floating-close {
|
|
115
|
+
position: absolute;
|
|
116
|
+
top: var(--st-space-3);
|
|
117
|
+
right: var(--st-space-3);
|
|
118
|
+
z-index: 20;
|
|
119
|
+
display: inline-flex;
|
|
120
|
+
align-items: center;
|
|
121
|
+
justify-content: center;
|
|
122
|
+
width: 30px;
|
|
123
|
+
height: 30px;
|
|
124
|
+
padding: 0;
|
|
125
|
+
border-radius: 50%;
|
|
126
|
+
background-color: var(--st-color-feedback-error-bg, #ef4444);
|
|
127
|
+
border: none;
|
|
128
|
+
color: #ffffff;
|
|
129
|
+
cursor: pointer;
|
|
130
|
+
transition: background-color 0.15s ease, transform 0.15s ease;
|
|
131
|
+
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.4);
|
|
132
|
+
|
|
133
|
+
svg {
|
|
134
|
+
width: 16px;
|
|
135
|
+
height: 16px;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
&:hover:not(:disabled) {
|
|
139
|
+
background-color: #dc2626;
|
|
140
|
+
transform: scale(1.1);
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
&:disabled {
|
|
144
|
+
opacity: 0.4;
|
|
145
|
+
cursor: not-allowed;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
.st-cropper-overlay-controls {
|
|
150
|
+
position: relative;
|
|
151
|
+
width: 100%;
|
|
152
|
+
z-index: 10;
|
|
153
|
+
display: flex;
|
|
154
|
+
flex-direction: column;
|
|
155
|
+
gap: var(--st-space-2);
|
|
156
|
+
padding: var(--st-space-2) var(--st-space-4) var(--st-space-3);
|
|
157
|
+
box-sizing: border-box;
|
|
158
|
+
background-color: #111418;
|
|
159
|
+
border-top: 1px solid rgba(255, 255, 255, 0.08);
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
.st-cropper-buttons-row {
|
|
163
|
+
display: flex;
|
|
164
|
+
align-items: center;
|
|
165
|
+
justify-content: space-between;
|
|
166
|
+
gap: var(--st-space-2);
|
|
167
|
+
width: 100%;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
.st-cropper-align-group {
|
|
171
|
+
display: flex;
|
|
172
|
+
align-items: center;
|
|
173
|
+
gap: var(--st-space-2);
|
|
174
|
+
margin-left: auto;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
.st-cropper-slider-row {
|
|
178
|
+
display: flex;
|
|
179
|
+
align-items: center;
|
|
180
|
+
width: 100%;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
.st-cropper-slider {
|
|
184
|
+
flex: 1;
|
|
185
|
+
width: 100%;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
.st-cropper-icon-btn {
|
|
189
|
+
display: inline-flex;
|
|
190
|
+
align-items: center;
|
|
191
|
+
justify-content: center;
|
|
192
|
+
width: 32px;
|
|
193
|
+
height: 32px;
|
|
194
|
+
padding: 0;
|
|
195
|
+
|
|
196
|
+
svg {
|
|
197
|
+
width: 16px;
|
|
198
|
+
height: 16px;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
}
|