ngx-strata 0.2.5 → 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 (59) 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 +66 -14
  5. package/assets/styles/components/badge.scss +134 -0
  6. package/assets/styles/components/button.scss +54 -9
  7. package/assets/styles/components/checkbox.scss +10 -2
  8. package/assets/styles/components/divider.scss +5 -3
  9. package/assets/styles/components/file-upload.scss +113 -0
  10. package/assets/styles/components/image-cropper.scss +201 -0
  11. package/assets/styles/components/input-field.scss +39 -9
  12. package/assets/styles/components/item.scss +1 -1
  13. package/assets/styles/components/modal.scss +106 -1
  14. package/assets/styles/components/notification.scss +30 -1
  15. package/assets/styles/components/otp.scss +132 -0
  16. package/assets/styles/components/pagination.scss +13 -3
  17. package/assets/styles/components/progress.scss +2 -2
  18. package/assets/styles/components/radio.scss +3 -2
  19. package/assets/styles/components/segmented-control.scss +43 -11
  20. package/assets/styles/components/select.scss +36 -7
  21. package/assets/styles/components/sidemenu.scss +56 -2
  22. package/assets/styles/components/slider.scss +30 -2
  23. package/assets/styles/components/stepper.scss +378 -0
  24. package/assets/styles/components/table.scss +1 -1
  25. package/assets/styles/components/tabs.scss +1 -1
  26. package/assets/styles/components/toggle.scss +1 -0
  27. package/assets/styles/components/tooltip.scss +9 -6
  28. package/assets/styles/public-api.scss +6 -1
  29. package/assets/styles/semantics/color-semantic.scss +38 -0
  30. package/dist/strata/strata.css +1 -1
  31. package/fesm2022/ngx-strata-src-lib-testing.mjs +33 -0
  32. package/fesm2022/ngx-strata-src-lib-testing.mjs.map +1 -0
  33. package/fesm2022/ngx-strata.mjs +2904 -1228
  34. package/fesm2022/ngx-strata.mjs.map +1 -1
  35. package/package.json +5 -1
  36. package/skills/ngx-strata/SKILL.md +44 -18
  37. package/skills/ngx-strata/components/accordion.md +9 -7
  38. package/skills/ngx-strata/components/action-menu.md +14 -3
  39. package/skills/ngx-strata/components/avatar.md +22 -10
  40. package/skills/ngx-strata/components/badge.md +54 -0
  41. package/skills/ngx-strata/components/checkbox.md +32 -5
  42. package/skills/ngx-strata/components/file-upload.md +50 -0
  43. package/skills/ngx-strata/components/icon.md +12 -7
  44. package/skills/ngx-strata/components/image-cropper.md +83 -0
  45. package/skills/ngx-strata/components/item.md +4 -3
  46. package/skills/ngx-strata/components/modal.md +180 -31
  47. package/skills/ngx-strata/components/notification.md +50 -14
  48. package/skills/ngx-strata/components/otp.md +68 -0
  49. package/skills/ngx-strata/components/pagination.md +6 -3
  50. package/skills/ngx-strata/components/radio.md +30 -10
  51. package/skills/ngx-strata/components/segmented-control.md +40 -19
  52. package/skills/ngx-strata/components/sidemenu.md +27 -6
  53. package/skills/ngx-strata/components/single-select.md +47 -15
  54. package/skills/ngx-strata/components/slider.md +35 -6
  55. package/skills/ngx-strata/components/stepper.md +64 -0
  56. package/skills/ngx-strata/components/testing.md +33 -0
  57. package/skills/ngx-strata/components/toggle.md +29 -5
  58. package/types/ngx-strata-src-lib-testing.d.ts +21 -0
  59. package/types/ngx-strata.d.ts +753 -371
@@ -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
 
@@ -1,6 +1,8 @@
1
1
  st-avatar {
2
- --st-avatar-bg-color: var(--st-bg-light);
2
+ --avatar-size: 48px;
3
+ --st-avatar-bg-color: var(--st-color-bg-subtle);
3
4
  --st-avatar-text-color: var(--st-color-text-primary);
5
+ --st-avatar-object-fit: cover;
4
6
 
5
7
  z-index: var(--z, 0);
6
8
  transition: z-index 0s;
@@ -8,18 +10,20 @@ st-avatar {
8
10
  background-color: var(--st-avatar-bg-color);
9
11
  border-radius: var(--avatar-size);
10
12
  overflow: hidden;
11
- display: grid;
13
+ display: inline-flex;
14
+ align-items: center;
15
+ justify-content: center;
12
16
  width: var(--avatar-size);
13
17
  height: var(--avatar-size);
14
18
  max-width: var(--avatar-size);
15
19
  max-height: var(--avatar-size);
16
20
  min-width: var(--avatar-size);
17
21
  min-height: var(--avatar-size);
18
- place-content: center;
22
+ flex-shrink: 0;
19
23
  color: var(--st-avatar-text-color);
20
24
  fill: var(--st-avatar-text-color);
21
25
 
22
- span {
26
+ > span {
23
27
  font-weight: bold;
24
28
  user-select: none;
25
29
  }
@@ -27,6 +31,46 @@ st-avatar {
27
31
  img {
28
32
  width: 100%;
29
33
  height: 100%;
34
+ object-fit: var(--st-avatar-object-fit);
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
+ }
30
74
  }
31
75
  }
32
76
 
@@ -58,7 +102,7 @@ st-avatar.st-theme-brand {
58
102
  st-avatar-stack.xs>st-avatar {
59
103
  --avatar-size: 20px;
60
104
 
61
- span {
105
+ > span {
62
106
  font-size: 0.6rem !important;
63
107
  }
64
108
  }
@@ -66,7 +110,7 @@ st-avatar-stack.xs>st-avatar {
66
110
  st-avatar.xs {
67
111
  --avatar-size: 20px;
68
112
 
69
- span {
113
+ > span {
70
114
  font-size: 0.6rem;
71
115
  }
72
116
  }
@@ -74,7 +118,7 @@ st-avatar.xs {
74
118
  st-avatar-stack.sm>st-avatar {
75
119
  --avatar-size: 32px;
76
120
 
77
- span {
121
+ > span {
78
122
  font-size: 0.8rem !important;
79
123
  }
80
124
  }
@@ -82,7 +126,7 @@ st-avatar-stack.sm>st-avatar {
82
126
  st-avatar.sm {
83
127
  --avatar-size: 32px;
84
128
 
85
- span {
129
+ > span {
86
130
  font-size: 0.8rem;
87
131
  }
88
132
  }
@@ -90,7 +134,7 @@ st-avatar.sm {
90
134
  st-avatar-stack.md>st-avatar {
91
135
  --avatar-size: 48px;
92
136
 
93
- span {
137
+ > span {
94
138
  font-size: 1rem !important;
95
139
  }
96
140
  }
@@ -98,7 +142,7 @@ st-avatar-stack.md>st-avatar {
98
142
  st-avatar.md {
99
143
  --avatar-size: 48px;
100
144
 
101
- span {
145
+ > span {
102
146
  font-size: 1rem;
103
147
  }
104
148
  }
@@ -106,7 +150,7 @@ st-avatar.md {
106
150
  st-avatar-stack.lg>st-avatar {
107
151
  --avatar-size: 72px;
108
152
 
109
- span {
153
+ > span {
110
154
  font-size: 1.6rem !important;
111
155
  }
112
156
  }
@@ -114,7 +158,7 @@ st-avatar-stack.lg>st-avatar {
114
158
  st-avatar.lg {
115
159
  --avatar-size: 72px;
116
160
 
117
- span {
161
+ > span {
118
162
  font-size: 1.6rem;
119
163
  }
120
164
  }
@@ -137,14 +181,22 @@ st-avatar-stack {
137
181
  &.loose>st-avatar:not(:first-child) {
138
182
  margin-left: calc(var(--avatar-size) * -0.3);
139
183
  }
184
+
185
+ &.first-on-front>st-avatar {
186
+ @for $i from 1 through 20 {
187
+ &:nth-child(#{$i}) {
188
+ z-index: #{21 - $i};
189
+ }
190
+ }
191
+ }
140
192
  }
141
193
 
142
194
  st-avatar-stack>st-avatar {
143
195
  position: relative;
144
- border: var(--st-current-bg-color) solid 3px;
196
+ border: var(--st-current-bg-color, var(--st-color-bg-raised)) solid 3px;
145
197
  margin: 0px;
146
198
 
147
199
  &:hover {
148
- z-index: calc(var(--z, 0) + 100);
200
+ z-index: 100 !important;
149
201
  }
150
202
  }
@@ -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
+ }
@@ -27,10 +27,10 @@ st-button-group {
27
27
  }
28
28
 
29
29
  button[stButton] {
30
- --st-button-background-color: var(--st-bg-light);
31
- --st-button-text-color: var(--st-color-text-primary);
30
+ --st-button-background-color: var(--st-color-control-bg);
31
+ --st-button-text-color: var(--st-color-control-text);
32
32
 
33
- --st-button-hover-color: var(--st-color-bg-raised);
33
+ --st-button-hover-color: var(--st-color-control-bg-hover);
34
34
 
35
35
  color: var(--st-button-text-color);
36
36
  background: none;
@@ -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;
@@ -100,14 +145,14 @@ button[stButton] {
100
145
  }
101
146
 
102
147
  &.st-button-primary {
103
- --st-button-background-color: var(--st-bg-contrast);
104
- --st-button-text-color: var(--st-text-contrast);
105
- --st-button-hover-color: var(--st-bg-contrast-light);
148
+ --st-button-background-color: var(--st-color-control-primary-bg);
149
+ --st-button-text-color: var(--st-color-control-primary-text);
150
+ --st-button-hover-color: var(--st-color-control-primary-bg-hover);
106
151
  }
107
152
 
108
153
  &.st-button-secondary {
109
- --st-button-background-color: var(--st-bg-light);
110
- --st-button-text-color: var(--st-color-text-primary);
154
+ --st-button-background-color: var(--st-color-control-bg);
155
+ --st-button-text-color: var(--st-color-control-text);
111
156
 
112
157
  font-weight: 500;
113
158
  }
@@ -121,7 +166,7 @@ button[stButton] {
121
166
 
122
167
  &.st-button-ghost {
123
168
  --st-button-background-color: transparent;
124
- --st-button-hover-color: var(--st-bg-light);
169
+ --st-button-hover-color: var(--st-color-control-bg);
125
170
  --st-button-text-color: var(--st-color-text-primary);
126
171
 
127
172
  }
@@ -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
  }
@@ -1,10 +1,12 @@
1
1
  st-divider {
2
+ --st-divider-color: var(--st-color-border-default);
3
+
2
4
  display: block;
3
5
 
4
6
  .divider-line {
5
7
  &.vertical {
6
8
  height: 100%;
7
- border-right: var(--st-border-width) solid var(--st-border-muted);
9
+ border-right: var(--st-border-width, 1px) solid var(--st-divider-color);
8
10
  width: 1px;
9
11
  &.divider-margin {
10
12
  margin-left: var(--st-size-xxs);
@@ -14,7 +16,7 @@ st-divider {
14
16
 
15
17
  &:not(.vertical) {
16
18
  width: 100%;
17
- border-bottom: var(--st-border-width) solid var(--st-border-muted);
19
+ border-bottom: var(--st-border-width, 1px) solid var(--st-divider-color);
18
20
  &.divider-margin {
19
21
  margin-top: var(--st-size-xxs);
20
22
  margin-bottom: var(--st-size-xxs);
@@ -30,7 +32,7 @@ st-divider {
30
32
  margin-bottom: var(--st-size-xxxs);
31
33
  span {
32
34
  font-size: var(--st-font-sm);
33
- color: var(--st-border-muted);
35
+ color: var(--st-color-text-secondary);
34
36
  white-space: nowrap;
35
37
  }
36
38
  &.divider-margin {
@@ -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
+ }