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.
Files changed (49) hide show
  1. package/assets/icons/check.svg +1 -0
  2. package/assets/styles/components/accordion.scss +12 -1
  3. package/assets/styles/components/action-menu.scss +1 -1
  4. package/assets/styles/components/avatar.scss +48 -9
  5. package/assets/styles/components/badge.scss +134 -0
  6. package/assets/styles/components/button.scss +45 -0
  7. package/assets/styles/components/checkbox.scss +10 -2
  8. package/assets/styles/components/file-upload.scss +113 -0
  9. package/assets/styles/components/image-cropper.scss +201 -0
  10. package/assets/styles/components/input-field.scss +39 -9
  11. package/assets/styles/components/item.scss +1 -1
  12. package/assets/styles/components/modal.scss +106 -1
  13. package/assets/styles/components/notification.scss +29 -0
  14. package/assets/styles/components/otp.scss +132 -0
  15. package/assets/styles/components/pagination.scss +13 -3
  16. package/assets/styles/components/progress.scss +2 -2
  17. package/assets/styles/components/radio.scss +3 -2
  18. package/assets/styles/components/segmented-control.scss +43 -11
  19. package/assets/styles/components/select.scss +29 -6
  20. package/assets/styles/components/slider.scss +30 -2
  21. package/assets/styles/components/stepper.scss +378 -0
  22. package/assets/styles/components/table.scss +1 -1
  23. package/assets/styles/components/tabs.scss +1 -1
  24. package/assets/styles/components/toggle.scss +1 -0
  25. package/assets/styles/components/tooltip.scss +9 -6
  26. package/assets/styles/public-api.scss +6 -1
  27. package/dist/strata/strata.css +1 -1
  28. package/fesm2022/ngx-strata.mjs +3058 -1455
  29. package/fesm2022/ngx-strata.mjs.map +1 -1
  30. package/package.json +1 -1
  31. package/skills/ngx-strata/SKILL.md +43 -18
  32. package/skills/ngx-strata/components/accordion.md +9 -7
  33. package/skills/ngx-strata/components/avatar.md +22 -10
  34. package/skills/ngx-strata/components/badge.md +54 -0
  35. package/skills/ngx-strata/components/checkbox.md +30 -5
  36. package/skills/ngx-strata/components/file-upload.md +50 -0
  37. package/skills/ngx-strata/components/icon.md +12 -7
  38. package/skills/ngx-strata/components/image-cropper.md +83 -0
  39. package/skills/ngx-strata/components/modal.md +180 -31
  40. package/skills/ngx-strata/components/notification.md +50 -14
  41. package/skills/ngx-strata/components/otp.md +68 -0
  42. package/skills/ngx-strata/components/pagination.md +6 -3
  43. package/skills/ngx-strata/components/radio.md +30 -10
  44. package/skills/ngx-strata/components/segmented-control.md +40 -19
  45. package/skills/ngx-strata/components/single-select.md +47 -15
  46. package/skills/ngx-strata/components/slider.md +35 -6
  47. package/skills/ngx-strata/components/stepper.md +64 -0
  48. package/skills/ngx-strata/components/toggle.md +27 -6
  49. 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-light);
63
+ background-color: var(--st-color-bg-default);
53
64
  cursor: pointer;
54
65
  }
55
66
 
@@ -12,7 +12,7 @@ st-action-menu-item {
12
12
  user-select: none;
13
13
 
14
14
  &:hover {
15
- background-color: var(--st-bg-light);
15
+ background-color: var(--st-color-control-bg-hover);
16
16
  cursor: pointer;
17
17
  }
18
18
 
@@ -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-light);
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
+ }