Skip to content
This repository was archived by the owner on Jul 22, 2025. It is now read-only.

Commit a747c45

Browse files
committed
UX: additional styling for uploads
1 parent b80d979 commit a747c45

File tree

2 files changed

+90
-33
lines changed

2 files changed

+90
-33
lines changed

assets/javascripts/discourse/templates/discourse-ai-bot-conversations.gjs

Lines changed: 23 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,9 @@ export default RouteTemplate(
1717
/>
1818

1919
<div class="ai-bot-conversations__content-wrapper">
20-
<h1>{{i18n "discourse_ai.ai_bot.conversations.header"}}</h1>
20+
<div class="ai-bot-conversations__title">
21+
{{i18n "discourse_ai.ai_bot.conversations.header"}}
22+
</div>
2123
<PluginOutlet
2224
@name="ai-bot-conversations-above-input"
2325
@outletArgs={{hash
@@ -30,19 +32,23 @@ export default RouteTemplate(
3032
<div class="ai-bot-conversations__uploads-container">
3133
{{#each @controller.uploads as |upload|}}
3234
<div class="ai-bot-upload">
33-
<span class="ai-bot-upload__filename">{{upload.original_filename}}</span>
35+
<span class="ai-bot-upload__filename">
36+
{{upload.original_filename}}
37+
</span>
3438
<DButton
3539
@icon="xmark"
3640
@action={{fn @controller.removeUpload upload}}
37-
class="btn-flat ai-bot-upload__remove"
41+
class="btn-transparent ai-bot-upload__remove"
3842
/>
3943
</div>
4044
{{/each}}
4145

4246
{{#each @controller.inProgressUploads as |upload|}}
4347
<div class="ai-bot-upload ai-bot-upload--in-progress">
4448
<span class="ai-bot-upload__filename">{{upload.fileName}}</span>
45-
<span class="ai-bot-upload__progress">{{upload.progress}}%</span>
49+
<span class="ai-bot-upload__progress">
50+
{{upload.progress}}%
51+
</span>
4652
<DButton
4753
@icon="xmark"
4854
@action={{fn @controller.cancelUpload upload}}
@@ -54,6 +60,12 @@ export default RouteTemplate(
5460
{{/if}}
5561

5662
<div class="ai-bot-conversations__input-wrapper">
63+
<DButton
64+
@icon="upload"
65+
@action={{@controller.openFileUpload}}
66+
@title="discourse_ai.ai_bot.conversations.upload_files"
67+
class="btn btn-transparent ai-bot-upload-btn"
68+
/>
5769
<textarea
5870
{{didInsert @controller.setTextArea}}
5971
{{on "input" @controller.updateInputValue}}
@@ -64,21 +76,13 @@ export default RouteTemplate(
6476
disabled={{@controller.loading}}
6577
rows="1"
6678
/>
67-
<div class="ai-bot-conversations__buttons">
68-
<DButton
69-
@icon="upload"
70-
@action={{@controller.openFileUpload}}
71-
@title="discourse_ai.ai_bot.conversations.upload_files"
72-
class="btn no-text ai-bot-upload-btn"
73-
/>
74-
<DButton
75-
@action={{@controller.prepareAndSubmitToBot}}
76-
@icon="paper-plane"
77-
@isLoading={{@controller.loading}}
78-
@title="discourse_ai.ai_bot.conversations.header"
79-
class="ai-bot-button btn-primary ai-conversation-submit"
80-
/>
81-
</div>
79+
<DButton
80+
@action={{@controller.prepareAndSubmitToBot}}
81+
@icon="paper-plane"
82+
@isLoading={{@controller.loading}}
83+
@title="discourse_ai.ai_bot.conversations.header"
84+
class="ai-bot-button btn-primary ai-conversation-submit"
85+
/>
8286
</div>
8387

8488
{{! Hidden file input element }}

assets/stylesheets/modules/ai-bot-conversations/common.scss

Lines changed: 67 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -203,47 +203,74 @@ body.has-ai-conversations-sidebar {
203203
align-items: center;
204204
justify-content: center;
205205
flex: 1 1 auto;
206+
gap: 0.5em;
206207

207208
.loading-container {
208209
display: contents;
209210
}
211+
}
212+
213+
&__title {
214+
font-size: var(--font-up-5);
215+
font-weight: bold;
216+
text-align: center;
217+
margin-bottom: 0.25em;
218+
line-height: var(--line-height-medium);
210219

211220
// optical centering for layout balance
212221
@media screen and (min-height: 600px) {
213-
h1 {
214-
margin-top: -6em;
215-
}
222+
margin-top: -6em;
216223
}
217224
}
218225

219226
&__input-wrapper {
227+
--input-min-height: 2.5em;
220228
display: flex;
221-
align-items: stretch;
222-
gap: 0.5em;
229+
align-items: end;
223230
width: 100%;
224231

225232
@include viewport.from(sm) {
233+
--input-max-width: 46em;
226234
width: 80%;
227-
max-width: 46em;
235+
max-width: var(--input-max-width);
228236
}
229237

230238
.ai-conversation-submit {
231-
align-self: end;
232-
min-height: 2.5em;
233-
max-height: 2.5em;
239+
margin-left: 0.5em;
240+
height: var(--input-min-height);
241+
}
242+
243+
.ai-bot-upload-btn {
244+
min-height: var(--input-min-height);
245+
align-self: stretch;
246+
background: transparent;
247+
border: 1px solid var(--primary-low);
248+
border-right: none;
249+
border-radius: var(--d-button-border-radius) 0 0
250+
var(--d-button-border-radius);
251+
252+
&:focus-visible {
253+
border-color: var(--tertiary);
254+
255+
+ #ai-bot-conversations-input {
256+
border-left-color: var(--tertiary);
257+
}
258+
}
234259
}
235260

236261
#ai-bot-conversations-input {
237262
width: 100%;
238263
margin: 0;
239264
resize: none;
240-
border-radius: var(--d-button-border-radius);
241265
max-height: 30vh;
242-
overflow-y: hidden;
266+
min-height: var(--input-min-height);
267+
border-radius: 0 var(--d-button-border-radius)
268+
var(--d-button-border-radius) 0;
269+
border: 1px solid var(--primary-low);
243270

244-
&:focus {
271+
&:focus-visible {
245272
outline: none;
246-
border-color: var(--primary-high);
273+
border-color: var(--tertiary);
247274
}
248275
}
249276
}
@@ -252,10 +279,11 @@ body.has-ai-conversations-sidebar {
252279
text-align: center;
253280
font-size: var(--font-down-1);
254281
color: var(--primary-700);
282+
margin-top: 0;
255283

256284
@include viewport.from(sm) {
257285
width: 80%;
258-
max-width: 46em;
286+
max-width: var(--input-max-width);
259287
}
260288
}
261289

@@ -274,6 +302,31 @@ body.has-ai-conversations-sidebar {
274302
.topic-footer-main-buttons {
275303
justify-content: flex-end;
276304
}
305+
306+
.ai-bot-conversations__uploads-container {
307+
width: 100%;
308+
max-width: var(--input-max-width);
309+
display: flex;
310+
justify-content: center;
311+
flex-wrap: wrap;
312+
gap: 0.5em;
313+
}
314+
315+
.ai-bot-upload {
316+
display: flex;
317+
align-items: center;
318+
border: 1px solid var(--primary-low);
319+
border-radius: 10em;
320+
padding-left: 0.75em;
321+
color: var(--primary-high);
322+
323+
&:hover,
324+
&:focus-visible {
325+
.d-icon {
326+
color: var(--danger);
327+
}
328+
}
329+
}
277330
}
278331

279332
@include viewport.until(sm) {

0 commit comments

Comments
 (0)