banhaten 0.1.0 → 0.1.2

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 (81) hide show
  1. package/README.md +21 -9
  2. package/package.json +8 -2
  3. package/registry/components/accordion.tsx +37 -1
  4. package/registry/components/alert.tsx +14 -28
  5. package/registry/components/attribute.tsx +6 -10
  6. package/registry/components/autocomplete.tsx +637 -0
  7. package/registry/components/avatar.tsx +259 -24
  8. package/registry/components/badge.tsx +97 -35
  9. package/registry/components/button-group.tsx +1 -1
  10. package/registry/components/card.tsx +1 -1
  11. package/registry/components/checkbox.tsx +19 -16
  12. package/registry/components/date-picker-state.ts +253 -0
  13. package/registry/components/date-picker.tsx +115 -158
  14. package/registry/components/expanded/ActivityFeed.tsx +37 -23
  15. package/registry/components/expanded/Banner.tsx +54 -19
  16. package/registry/components/expanded/Breadcrumbs.tsx +10 -38
  17. package/registry/components/expanded/CatalogComponentsShowcase.tsx +11 -16
  18. package/registry/components/expanded/CatalogTag.tsx +4 -11
  19. package/registry/components/expanded/CommandBar.tsx +33 -53
  20. package/registry/components/expanded/EmptyState.tsx +155 -0
  21. package/registry/components/expanded/FileUpload.tsx +362 -59
  22. package/registry/components/expanded/OnboardingStepListItem.tsx +6 -10
  23. package/registry/components/expanded/PageHeader.tsx +2 -11
  24. package/registry/components/expanded/Slideout.tsx +12 -23
  25. package/registry/components/expanded/Steps.tsx +6 -8
  26. package/registry/components/expanded/Table.tsx +18 -40
  27. package/registry/components/expanded/Timeline.tsx +5 -24
  28. package/registry/components/expanded/activityFeed.css +10 -54
  29. package/registry/components/expanded/banner.css +8 -75
  30. package/registry/components/expanded/breadcrumbs.css +1 -1
  31. package/registry/components/expanded/commandBar.css +23 -26
  32. package/registry/components/expanded/divider.css +1 -1
  33. package/registry/components/expanded/emptyState.css +111 -0
  34. package/registry/components/expanded/fileUpload.css +304 -75
  35. package/registry/components/expanded/pageHeader.css +1 -1
  36. package/registry/components/expanded/slideout.css +1 -0
  37. package/registry/components/expanded/steps.css +15 -51
  38. package/registry/components/expanded/table.css +6 -1
  39. package/registry/components/expanded/timeline.css +18 -15
  40. package/registry/components/input-otp.tsx +574 -0
  41. package/registry/components/input.tsx +140 -59
  42. package/registry/components/menu.tsx +470 -80
  43. package/registry/components/pagination.tsx +6 -18
  44. package/registry/components/popover.tsx +840 -0
  45. package/registry/components/radio-card.tsx +25 -31
  46. package/registry/components/select-content.tsx +28 -123
  47. package/registry/components/select.tsx +13 -9
  48. package/registry/components/skeleton.css +57 -0
  49. package/registry/components/skeleton.tsx +482 -0
  50. package/registry/components/social-button.tsx +24 -90
  51. package/registry/components/spinner.tsx +91 -7
  52. package/registry/components/textarea.tsx +21 -36
  53. package/registry/components/toggle.tsx +7 -23
  54. package/registry/components/tooltip.tsx +8 -4
  55. package/registry/examples/attribute-demo.tsx +2 -2
  56. package/registry/examples/autocomplete-demo.tsx +109 -0
  57. package/registry/examples/avatar-demo.tsx +102 -47
  58. package/registry/examples/badge-demo.tsx +16 -0
  59. package/registry/examples/checkbox-demo.tsx +3 -8
  60. package/registry/examples/date-picker-demo.tsx +75 -22
  61. package/registry/examples/expanded/banner-demo.tsx +31 -6
  62. package/registry/examples/expanded/breadcrumbs-demo.tsx +59 -0
  63. package/registry/examples/expanded/command-bar-demo.tsx +236 -0
  64. package/registry/examples/expanded/empty-state-demo.tsx +39 -0
  65. package/registry/examples/expanded/file-upload-demo.tsx +60 -0
  66. package/registry/examples/expanded/steps-demo.tsx +11 -0
  67. package/registry/examples/expanded/table-demo.tsx +142 -0
  68. package/registry/examples/input-demo.tsx +1 -1
  69. package/registry/examples/input-otp-demo.tsx +72 -0
  70. package/registry/examples/menu-demo.tsx +101 -88
  71. package/registry/examples/popover-demo.tsx +546 -0
  72. package/registry/examples/progress-demo.tsx +2 -2
  73. package/registry/examples/select-demo.tsx +32 -18
  74. package/registry/examples/skeleton-demo.tsx +56 -0
  75. package/registry/examples/social-button-demo.tsx +33 -33
  76. package/registry/examples/spinner-demo.tsx +59 -0
  77. package/registry/examples/tag-demo.tsx +1 -1
  78. package/registry/examples/textarea-demo.tsx +1 -1
  79. package/registry/index.json +266 -20
  80. package/registry/styles/globals.css +93 -3
  81. package/src/cli/index.js +997 -62
@@ -0,0 +1,111 @@
1
+ .ds-empty-state {
2
+ box-sizing: border-box;
3
+ width: 100%;
4
+ max-width: calc(var(--bh-space-19xl-384) + var(--bh-space-9xl-64));
5
+ min-height: var(--bh-space-16xl-256);
6
+ display: grid;
7
+ align-content: center;
8
+ justify-items: center;
9
+ gap: var(--bh-space-5xl-24);
10
+ margin-inline: auto;
11
+ padding: var(--bh-space-6xl-32);
12
+ color: var(--bh-content-default);
13
+ font-family: var(--bh-font-family);
14
+ letter-spacing: 0;
15
+ text-align: center;
16
+ }
17
+
18
+ .ds-empty-state *,
19
+ .ds-empty-state *::before,
20
+ .ds-empty-state *::after {
21
+ box-sizing: border-box;
22
+ }
23
+
24
+ .ds-empty-state--start {
25
+ justify-items: start;
26
+ margin-inline: 0;
27
+ text-align: start;
28
+ }
29
+
30
+ .ds-empty-state--compact {
31
+ min-height: var(--bh-space-13xl-160);
32
+ gap: var(--bh-space-3xl-16);
33
+ padding: var(--bh-space-5xl-24);
34
+ }
35
+
36
+ .ds-empty-state__icon-wrap {
37
+ width: var(--bh-space-10xl-80);
38
+ height: var(--bh-space-10xl-80);
39
+ border-radius: var(--bh-radius-full);
40
+ display: grid;
41
+ flex: 0 0 auto;
42
+ place-items: center;
43
+ background: var(--bh-bg-neutral-subtle);
44
+ color: var(--bh-content-default);
45
+ }
46
+
47
+ .ds-empty-state--compact .ds-empty-state__icon-wrap {
48
+ width: var(--bh-space-9xl-64);
49
+ height: var(--bh-space-9xl-64);
50
+ }
51
+
52
+ .ds-empty-state__icon-media {
53
+ width: var(--bh-space-6xl-32);
54
+ height: var(--bh-space-6xl-32);
55
+ display: grid;
56
+ place-items: center;
57
+ color: var(--bh-content-default);
58
+ }
59
+
60
+ .ds-empty-state--compact .ds-empty-state__icon-media {
61
+ width: var(--bh-space-5xl-24);
62
+ height: var(--bh-space-5xl-24);
63
+ }
64
+
65
+ .ds-empty-state__icon-media svg {
66
+ width: 100%;
67
+ height: 100%;
68
+ display: block;
69
+ stroke-width: var(--bh-empty-state-icon-stroke-width);
70
+ }
71
+
72
+ .ds-empty-state__copy {
73
+ min-width: 0;
74
+ display: grid;
75
+ justify-items: inherit;
76
+ gap: var(--bh-space-xs-4);
77
+ }
78
+
79
+ .ds-empty-state__title,
80
+ .ds-empty-state__description {
81
+ margin: 0;
82
+ }
83
+
84
+ .ds-empty-state__title {
85
+ color: var(--bh-content-default);
86
+ font-size: var(--bh-text-heading-xs-semibold-font-size);
87
+ font-weight: var(--bh-text-heading-xs-semibold-font-weight);
88
+ letter-spacing: var(--bh-text-heading-xs-semibold-letter-spacing);
89
+ line-height: var(--bh-text-heading-xs-semibold-line-height);
90
+ }
91
+
92
+ .ds-empty-state__description {
93
+ max-width: var(--bh-space-19xl-384);
94
+ color: var(--bh-content-subtle);
95
+ font-size: var(--bh-text-body-md-regular-font-size);
96
+ font-weight: var(--bh-text-body-md-regular-font-weight);
97
+ letter-spacing: var(--bh-text-body-md-regular-letter-spacing);
98
+ line-height: var(--bh-text-body-md-regular-line-height);
99
+ }
100
+
101
+ .ds-empty-state__actions {
102
+ min-width: 0;
103
+ display: flex;
104
+ flex-wrap: wrap;
105
+ justify-content: center;
106
+ gap: var(--bh-space-xl-12);
107
+ }
108
+
109
+ .ds-empty-state--start .ds-empty-state__actions {
110
+ justify-content: flex-start;
111
+ }
@@ -3,6 +3,7 @@
3
3
  width: 100%;
4
4
  max-width: var(--bh-file-upload-root-max-width);
5
5
  display: grid;
6
+ align-content: start;
6
7
  gap: var(--bh-space-xl-12);
7
8
  color: var(--bh-content-default);
8
9
  font-family: var(--bh-font-family);
@@ -20,29 +21,44 @@
20
21
  }
21
22
 
22
23
  .ds-file-upload__dropzone {
23
- min-height: calc(var(--bh-space-14xl-192) + var(--bh-space-xs-4));
24
+ min-height: calc(var(--bh-space-13xl-160) + var(--bh-space-4xl-20));
24
25
  display: grid;
25
26
  place-items: center;
26
- gap: var(--bh-space-md-8);
27
- padding: calc(var(--bh-space-6xl-32) + var(--bh-space-xxs-2)) var(--bh-space-5xl-24);
28
- border: var(--bh-space-xxxs-1) dashed var(--bh-border-default);
29
- border-radius: var(--bh-radius-lg-8);
30
- background: var(--bh-bg-muted);
27
+ gap: var(--bh-space-3xl-16);
28
+ padding: var(--bh-space-6xl-32) var(--bh-space-5xl-24);
29
+ border: var(--bh-border-width-strong) dashed var(--bh-border-default);
30
+ border-radius: var(--bh-radius-2xl-12);
31
+ background: var(--bh-bg-subtle);
32
+ color: var(--bh-content-default);
31
33
  text-align: center;
34
+ transition:
35
+ background-color var(--bh-duration-fast) var(--bh-easing-standard),
36
+ border-color var(--bh-duration-fast) var(--bh-easing-standard),
37
+ color var(--bh-duration-fast) var(--bh-easing-standard),
38
+ opacity var(--bh-duration-fast) var(--bh-easing-standard);
32
39
  }
33
40
 
34
- .ds-file-upload--sm .ds-file-upload__dropzone {
35
- min-height: calc(var(--bh-space-13xl-160) - var(--bh-space-sm-6));
36
- padding: var(--bh-space-5xl-24) calc(var(--bh-space-xl-12) + var(--bh-space-sm-6));
41
+ .ds-file-upload--button .ds-file-upload__dropzone {
42
+ min-height: var(--bh-space-16xl-256);
43
+ gap: var(--bh-space-5xl-24);
44
+ padding-inline: var(--bh-space-6xl-32);
37
45
  }
38
46
 
39
- .ds-file-upload__dropzone.is-dragging {
40
- border-color: var(--bh-border-brand-strong);
41
- background: var(--bh-bg-brand-soft);
47
+ .ds-file-upload__dropzone:hover,
48
+ .ds-file-upload__dropzone.is-hover {
49
+ border-color: var(--bh-border-strong);
42
50
  }
43
51
 
44
52
  .ds-file-upload__dropzone[aria-disabled="true"] {
45
- opacity: var(--bh-opacity-disabled-media);
53
+ border-color: var(--bh-border-disabled);
54
+ color: var(--bh-content-disabled);
55
+ cursor: not-allowed;
56
+ }
57
+
58
+ .ds-file-upload__dropzone[aria-disabled="true"] .ds-file-upload__helper,
59
+ .ds-file-upload__dropzone[aria-disabled="true"] .ds-file-upload__browse,
60
+ .ds-file-upload__dropzone[aria-disabled="true"] .ds-file-upload__title {
61
+ color: var(--bh-content-disabled);
46
62
  }
47
63
 
48
64
  .ds-file-upload__input {
@@ -54,22 +70,52 @@
54
70
  height: var(--bh-space-8xl-48);
55
71
  display: grid;
56
72
  place-items: center;
57
- border: var(--bh-space-xxxs-1) solid var(--bh-border-subtle);
58
- border-radius: var(--bh-control-default);
73
+ border: 0;
74
+ border-radius: var(--bh-radius-2xl-12);
59
75
  background: var(--bh-bg-default);
60
- color: var(--bh-content-subtle);
76
+ color: var(--bh-content-default);
77
+ box-shadow:
78
+ inset 0px 0px 0px var(--bh-border-width-default) var(--bh-border-subtle),
79
+ var(--shadow-component-default);
80
+ }
81
+
82
+ .ds-file-upload__dropzone:hover .ds-file-upload__icon,
83
+ .ds-file-upload__dropzone.is-hover .ds-file-upload__icon,
84
+ .ds-file-upload__dropzone[aria-disabled="true"] .ds-file-upload__icon {
85
+ box-shadow:
86
+ inset 0px 0px 0px var(--bh-border-width-default) var(--bh-border-subtle),
87
+ var(--shadow-component-default);
61
88
  }
62
89
 
63
90
  .ds-file-upload__icon svg {
64
91
  width: var(--bh-space-5xl-24);
65
92
  height: var(--bh-space-5xl-24);
93
+ stroke-width: 2;
66
94
  }
67
95
 
68
- .ds-file-upload__dropzone p {
96
+ .ds-file-upload__copy {
97
+ min-width: 0;
98
+ display: grid;
99
+ justify-items: center;
100
+ gap: var(--bh-space-xs-4);
101
+ }
102
+
103
+ .ds-file-upload--button .ds-file-upload__copy {
104
+ gap: var(--bh-space-md-8);
105
+ }
106
+
107
+ .ds-file-upload__title {
69
108
  margin: 0;
70
109
  color: var(--bh-content-default);
71
- font-size: var(--bh-text-body-md-font-size);
72
- line-height: var(--bh-text-body-md-line-height);
110
+ font-size: var(--bh-text-body-md-medium-font-size);
111
+ font-weight: var(--bh-font-weight-medium);
112
+ line-height: var(--bh-text-body-md-medium-line-height);
113
+ }
114
+
115
+ .ds-file-upload--button .ds-file-upload__title {
116
+ font-size: var(--bh-text-body-lg-semibold-font-size);
117
+ font-weight: var(--bh-font-weight-semibold);
118
+ line-height: var(--bh-text-body-lg-semibold-line-height);
73
119
  }
74
120
 
75
121
  .ds-file-upload__browse {
@@ -78,24 +124,34 @@
78
124
  color: var(--bh-content-link);
79
125
  padding: 0;
80
126
  font: inherit;
81
- font-weight: var(--bh-font-weight-semibold);
82
127
  cursor: pointer;
83
128
  }
84
129
 
85
- .ds-file-upload__browse:focus-visible {
130
+ .ds-file-upload__browse:hover {
131
+ color: var(--bh-content-link-hover);
132
+ }
133
+
134
+ .ds-file-upload__browse:focus-visible,
135
+ .ds-file-upload-row__retry:focus-visible {
86
136
  border-radius: var(--bh-radius-sm-4);
87
- outline: var(--bh-space-xxs-2) solid var(--bh-border-focus);
137
+ outline: var(--bh-focus-ring-width) solid var(--bh-border-focus);
88
138
  outline-offset: var(--bh-space-xxs-2);
89
139
  }
90
140
 
91
141
  .ds-file-upload__helper {
92
- color: var(--bh-content-muted);
93
- font-size: var(--bh-text-body-xs-regular-font-size);
94
- line-height: var(--bh-text-body-sm-regular-line-height);
142
+ color: var(--bh-content-subtle);
143
+ font-size: var(--bh-text-body-md-regular-font-size);
144
+ font-weight: var(--bh-font-weight-regular);
145
+ line-height: var(--bh-text-body-md-regular-line-height);
146
+ }
147
+
148
+ .ds-file-upload__button {
149
+ width: calc(var(--bh-space-13xl-160) + var(--bh-space-lg-10) + var(--bh-space-xxxs-1));
95
150
  }
96
151
 
97
152
  .ds-file-upload__list {
98
153
  display: grid;
154
+ align-content: start;
99
155
  gap: var(--bh-space-xl-12);
100
156
  margin: 0;
101
157
  padding: 0;
@@ -103,53 +159,123 @@
103
159
  }
104
160
 
105
161
  .ds-file-upload-row {
106
- display: grid;
107
- grid-template-columns: var(--bh-space-7xl-40) minmax(0, 1fr) auto auto;
162
+ --ds-file-upload-row-border: var(--bh-border-subtle);
163
+ --ds-file-upload-row-shadow:
164
+ inset 0px 0px 0px var(--bh-border-width-default) var(--ds-file-upload-row-border),
165
+ var(--shadow-component-default);
166
+
167
+ min-height: calc(var(--bh-space-9xl-64) + var(--bh-space-xl-12));
168
+ display: flex;
108
169
  align-items: center;
109
170
  gap: var(--bh-space-xl-12);
110
- min-height: calc(var(--bh-space-9xl-64) + var(--bh-space-md-8));
111
171
  padding: var(--bh-space-3xl-16);
112
- border: var(--bh-space-xxxs-1) solid var(--bh-border-subtle);
113
- border-radius: var(--bh-radius-lg-8);
172
+ border: 0;
173
+ border-radius: var(--bh-radius-2xl-12);
114
174
  background: var(--bh-bg-raised);
115
- box-shadow: var(--shadow-component-default);
175
+ box-shadow: var(--ds-file-upload-row-shadow);
176
+ overflow: clip;
116
177
  }
117
178
 
118
179
  .ds-file-upload-row--sm {
119
- grid-template-columns: var(--bh-space-6xl-32) minmax(0, 1fr) auto;
180
+ min-height: calc(var(--bh-space-8xl-48) + var(--bh-space-md-8));
120
181
  gap: var(--bh-space-md-8);
121
- min-height: calc(var(--bh-space-8xl-48) + var(--bh-space-lg-10));
122
182
  padding: var(--bh-space-xl-12);
183
+ border-radius: var(--bh-radius-lg-8);
184
+ }
185
+
186
+ .ds-file-upload-row--uploading-progress.ds-file-upload-row--lg {
187
+ min-height: calc(var(--bh-space-9xl-64) + var(--bh-space-lg-10));
188
+ }
189
+
190
+ .ds-file-upload-row--uploading-progress.ds-file-upload-row--sm {
191
+ min-height: var(--bh-space-9xl-64);
123
192
  }
124
193
 
125
194
  .ds-file-upload-row--error {
126
- border-color: var(--bh-border-danger-subtle);
195
+ --ds-file-upload-row-border: var(--bh-border-danger-strong);
196
+ --ds-file-upload-row-shadow:
197
+ inset 0px 0px 0px var(--bh-border-width-default) var(--ds-file-upload-row-border),
198
+ var(--shadow-xs);
199
+ }
200
+
201
+ .ds-file-upload-row__content {
202
+ min-width: 0;
203
+ flex: 1 1 auto;
204
+ display: flex;
205
+ align-items: center;
206
+ gap: var(--bh-space-xl-12);
207
+ }
208
+
209
+ .ds-file-upload-row--error.ds-file-upload-row--lg .ds-file-upload-row__content,
210
+ .ds-file-upload-row--uploading-progress.ds-file-upload-row--lg .ds-file-upload-row__content {
211
+ align-items: flex-start;
127
212
  }
128
213
 
129
- .ds-file-upload-row__file-icon {
214
+ .ds-file-upload-row--sm .ds-file-upload-row__content {
215
+ gap: var(--bh-space-xl-12);
216
+ }
217
+
218
+ .ds-file-upload-file-icon {
219
+ --ds-file-upload-file-page-fill: var(--bh-bg-neutral-subtle);
220
+
221
+ position: relative;
130
222
  width: var(--bh-space-7xl-40);
131
223
  height: var(--bh-space-7xl-40);
132
- display: grid;
133
- place-items: center;
134
- border-radius: var(--bh-control-default);
135
- background: var(--bh-interactive-secondary-default);
224
+ display: block;
225
+ flex: 0 0 var(--bh-space-7xl-40);
136
226
  color: var(--bh-content-subtle);
137
227
  }
138
228
 
139
- .ds-file-upload-row--sm .ds-file-upload-row__file-icon {
229
+ .ds-file-upload-file-icon--sm {
140
230
  width: var(--bh-space-6xl-32);
141
231
  height: var(--bh-space-6xl-32);
232
+ flex-basis: var(--bh-space-6xl-32);
142
233
  }
143
234
 
144
- .ds-file-upload-row__file-icon svg,
145
- .ds-file-upload-row__status svg {
146
- width: var(--bh-space-4xl-20);
147
- height: var(--bh-space-4xl-20);
235
+ .ds-file-upload-file-icon__svg {
236
+ width: 100%;
237
+ height: 100%;
238
+ display: block;
239
+ overflow: visible;
240
+ }
241
+
242
+ .ds-file-upload-file-icon__page {
243
+ fill: var(--ds-file-upload-file-page-fill);
244
+ stroke: currentColor;
245
+ }
246
+
247
+ .ds-file-upload-file-icon__fold {
248
+ stroke: currentColor;
249
+ }
250
+
251
+ .ds-file-upload-file-icon__badge {
252
+ fill: var(--ds-file-upload-file-badge-bg);
253
+ }
254
+
255
+ .ds-file-upload-file-icon__label {
256
+ fill: var(--bh-content-on-color);
257
+ font-family: var(--bh-font-family);
258
+ font-size: calc(var(--bh-space-lg-10) - var(--bh-space-xxxs-1));
259
+ font-weight: var(--bh-font-weight-bold);
260
+ letter-spacing: 0;
261
+ line-height: 1;
262
+ pointer-events: none;
263
+ text-rendering: geometricPrecision;
148
264
  }
149
265
 
150
266
  .ds-file-upload-row__copy {
151
267
  min-width: 0;
268
+ flex: 1 1 auto;
152
269
  display: grid;
270
+ gap: var(--bh-space-none);
271
+ text-align: start;
272
+ }
273
+
274
+ .ds-file-upload-row--error.ds-file-upload-row--lg .ds-file-upload-row__copy {
275
+ gap: var(--bh-space-none);
276
+ }
277
+
278
+ .ds-file-upload-row--uploading-progress .ds-file-upload-row__copy {
153
279
  gap: var(--bh-space-xxs-2);
154
280
  }
155
281
 
@@ -157,30 +283,80 @@
157
283
  min-width: 0;
158
284
  overflow: hidden;
159
285
  color: var(--bh-content-default);
160
- font-size: var(--bh-text-body-sm-regular-font-size);
161
- font-weight: var(--bh-font-weight-semibold);
162
- line-height: var(--bh-text-body-sm-regular-line-height);
286
+ font-size: var(--bh-text-body-md-medium-font-size);
287
+ font-weight: var(--bh-font-weight-medium);
288
+ line-height: var(--bh-text-body-md-medium-line-height);
163
289
  text-overflow: ellipsis;
164
290
  white-space: nowrap;
165
291
  }
166
292
 
167
- .ds-file-upload-row__copy span,
168
- .ds-file-upload-row__copy em {
169
- color: var(--bh-content-muted);
170
- font-size: var(--bh-text-body-2xs-regular-font-size);
171
- font-style: normal;
172
- line-height: var(--bh-text-body-2xs-regular-line-height);
293
+ .ds-file-upload-row--sm .ds-file-upload-row__copy strong {
294
+ font-size: var(--bh-text-body-sm-medium-font-size);
295
+ line-height: var(--bh-text-body-sm-medium-line-height);
173
296
  }
174
297
 
175
- .ds-file-upload-row__copy em {
176
- color: var(--bh-content-danger-default);
298
+ .ds-file-upload-row__details,
299
+ .ds-file-upload-row__headline {
300
+ min-width: 0;
301
+ display: flex;
302
+ align-items: center;
303
+ gap: var(--bh-space-md-8);
304
+ color: var(--bh-content-subtle);
305
+ font-size: var(--bh-text-body-sm-regular-font-size);
306
+ font-weight: var(--bh-font-weight-regular);
307
+ line-height: var(--bh-text-body-sm-regular-line-height);
308
+ }
309
+
310
+ .ds-file-upload-row__headline {
311
+ gap: var(--bh-space-xs-4);
312
+ }
313
+
314
+ .ds-file-upload-row__headline span {
315
+ flex: 0 0 auto;
316
+ color: var(--bh-content-subtle);
317
+ font-size: var(--bh-text-body-xs-regular-font-size);
318
+ line-height: var(--bh-text-body-xs-regular-line-height);
319
+ }
320
+
321
+ .ds-file-upload-row__headline strong {
322
+ flex: 0 1 auto;
323
+ }
324
+
325
+ .ds-file-upload-row__dot {
326
+ color: var(--bh-content-subtle);
327
+ }
328
+
329
+ .ds-file-upload-row__state {
330
+ position: relative;
331
+ display: inline-flex;
332
+ align-items: center;
333
+ gap: var(--bh-space-xs-4);
334
+ }
335
+
336
+ .ds-file-upload-row__state::before {
337
+ content: "";
338
+ width: var(--bh-border-width-default);
339
+ height: var(--bh-space-3xl-16);
340
+ margin-inline-end: var(--bh-space-none);
341
+ background: var(--bh-border-subtle);
177
342
  }
178
343
 
179
344
  .ds-file-upload-row__status {
180
- width: var(--bh-space-5xl-24);
181
- height: var(--bh-space-5xl-24);
182
- display: grid;
345
+ width: var(--bh-space-3xl-16);
346
+ height: var(--bh-space-3xl-16);
347
+ display: inline-grid;
183
348
  place-items: center;
349
+ flex: 0 0 var(--bh-space-3xl-16);
350
+ }
351
+
352
+ .ds-file-upload-row__status svg {
353
+ width: var(--bh-space-3xl-16);
354
+ height: var(--bh-space-3xl-16);
355
+ stroke-width: 2.2;
356
+ }
357
+
358
+ .ds-file-upload-row__status--standalone {
359
+ margin-inline-start: auto;
184
360
  }
185
361
 
186
362
  .ds-file-upload-row__status--uploaded {
@@ -195,34 +371,87 @@
195
371
  color: var(--bh-content-danger-default);
196
372
  }
197
373
 
198
- .ds-file-upload-row__actions {
199
- display: flex;
200
- align-items: center;
201
- gap: var(--bh-space-xs-4);
374
+ .ds-file-upload-row__status--uploading svg {
375
+ animation: ds-file-upload-spin 1s linear infinite;
202
376
  }
203
377
 
204
- .ds-file-upload-row--sm .ds-file-upload-row__actions {
205
- grid-column: 2 / -1;
206
- justify-content: flex-start;
378
+ .ds-file-upload-row--error .ds-file-upload-row__state,
379
+ .ds-file-upload-row--error .ds-file-upload-row__retry {
380
+ color: var(--bh-content-danger-default);
207
381
  }
208
382
 
209
- .ds-file-upload-row__actions button {
210
- min-height: calc(var(--bh-space-5xl-24) + var(--bh-space-xs-4));
383
+ .ds-file-upload-row__retry {
384
+ width: max-content;
211
385
  border: 0;
212
- border-radius: var(--bh-control-default);
213
- background: var(--bh-interactive-secondary-default);
214
- color: var(--bh-content-default);
215
- padding: 0 var(--bh-space-lg-10);
386
+ background: transparent;
387
+ padding: 0;
388
+ color: var(--bh-content-danger-default);
216
389
  font: inherit;
217
- font-size: var(--bh-text-body-2xs-regular-font-size);
218
- font-weight: var(--bh-font-weight-semibold);
390
+ font-size: var(--bh-text-body-md-medium-font-size);
391
+ font-weight: var(--bh-font-weight-medium);
392
+ line-height: var(--bh-text-body-md-medium-line-height);
393
+ text-decoration-line: underline;
394
+ text-underline-offset: 0.125em;
219
395
  cursor: pointer;
220
396
  }
221
397
 
222
- .ds-file-upload-row__actions button:hover {
223
- background: var(--bh-interactive-ghost-hover);
398
+ .ds-file-upload-row--error.ds-file-upload-row--lg .ds-file-upload-row__retry {
399
+ margin-block-start: var(--bh-space-md-8);
400
+ }
401
+
402
+ .ds-file-upload-row__progress {
403
+ width: 100%;
404
+ display: flex;
405
+ align-items: center;
406
+ gap: var(--bh-space-sm-6);
407
+ }
408
+
409
+ .ds-file-upload-row__progress-track {
410
+ position: relative;
411
+ height: var(--bh-space-sm-6);
412
+ flex: 1 1 auto;
413
+ overflow: hidden;
414
+ border-radius: var(--bh-radius-full);
415
+ background: var(--bh-bg-dim);
416
+ }
417
+
418
+ .ds-file-upload-row__progress-fill {
419
+ position: absolute;
420
+ inset-block: 0;
421
+ inset-inline-start: 0;
422
+ border-radius: inherit;
423
+ background: var(--bh-bg-success-default);
424
+ }
425
+
426
+ .ds-file-upload-row__progress-label {
427
+ flex: 0 0 auto;
428
+ color: var(--bh-content-subtle);
429
+ font-size: var(--bh-text-body-xs-regular-font-size);
430
+ line-height: var(--bh-text-body-xs-regular-line-height);
431
+ }
432
+
433
+ .ds-file-upload-row__actions {
434
+ flex: 0 0 auto;
435
+ display: flex;
436
+ align-items: center;
437
+ gap: var(--bh-space-xs-4);
438
+ }
439
+
440
+ .ds-file-upload-row__action {
441
+ color: var(--bh-content-default);
442
+ }
443
+
444
+ .ds-file-upload-row__action svg {
445
+ width: var(--bh-space-4xl-20);
446
+ height: var(--bh-space-4xl-20);
224
447
  }
225
448
 
226
449
  .ds-file-upload[dir="rtl"] {
227
450
  font-family: var(--bh-font-family);
228
451
  }
452
+
453
+ @keyframes ds-file-upload-spin {
454
+ to {
455
+ transform: rotate(360deg);
456
+ }
457
+ }
@@ -227,7 +227,7 @@
227
227
 
228
228
  .ds-page-header__action:focus-visible,
229
229
  .ds-page-header__breadcrumbs a:focus-visible {
230
- outline: var(--bh-space-xxs-2) solid var(--page-header-content-brand);
230
+ outline: var(--bh-focus-ring-width) solid var(--page-header-content-brand);
231
231
  outline-offset: var(--bh-space-xxs-2);
232
232
  }
233
233
 
@@ -202,6 +202,7 @@
202
202
  padding: var(--slideout-space-4xl);
203
203
  overflow-x: hidden;
204
204
  overflow-y: auto;
205
+ scrollbar-gutter: stable;
205
206
  scrollbar-color: var(--bh-bg-neutral-medium) transparent;
206
207
  scrollbar-width: thin;
207
208
  }