@assistant-ui/react
Version:
React components for AI chat.
222 lines (164 loc) • 5.65 kB
CSS
/* thread */
.aui-thread-root {
@apply bg-aui-background box-border h-full;
@apply [&>.aui-thread-viewport]:bg-inherit;
}
.aui-thread-viewport {
@apply bg-aui-background flex h-full flex-col items-center overflow-y-scroll scroll-smooth px-4 pt-8;
}
.aui-thread-viewport-footer {
@apply sticky bottom-0 mt-3 flex w-full max-w-2xl flex-col items-center justify-end rounded-t-lg bg-inherit pb-4;
}
.aui-thread-scroll-to-bottom {
@apply absolute -top-8 rounded-full disabled:invisible;
}
.aui-thread-followup-suggestions {
@apply flex min-h-8 items-center justify-center gap-2;
}
.aui-thread-followup-suggestion {
@apply bg-aui-background hover:bg-aui-muted/80 rounded-full border px-3 py-1 text-sm transition-colors ease-in;
}
/* thread welcome */
.aui-thread-welcome-root {
@apply flex w-full max-w-2xl flex-grow flex-col;
}
.aui-thread-welcome-center {
@apply flex w-full flex-grow flex-col items-center justify-center;
}
.aui-thread-welcome-message {
@apply mt-4 font-medium;
}
.aui-thread-welcome-suggestion-container {
@apply mt-3 flex w-full items-stretch justify-center gap-4;
}
.aui-thread-welcome-suggestion {
@apply hover:bg-aui-muted/80 flex max-w-sm grow basis-0 flex-col items-center justify-center rounded-lg border p-3 transition-colors ease-in;
}
.aui-thread-welcome-suggestion-text {
@apply line-clamp-2 text-ellipsis text-sm font-semibold;
}
/* thread composer */
.aui-composer-root {
@apply focus-within:border-aui-ring/20 flex w-full flex-wrap items-end rounded-lg border bg-inherit px-2.5 shadow-sm transition-colors ease-in;
}
.aui-composer-input {
@apply placeholder:text-aui-muted-foreground max-h-40 flex-grow resize-none border-none bg-transparent px-2 py-4 text-sm outline-none focus:ring-0 disabled:cursor-not-allowed;
}
.aui-composer-send,
.aui-composer-cancel,
.aui-composer-attach {
@apply my-2.5 size-8 p-2 transition-opacity ease-in;
}
.aui-composer-attachments {
@apply flex w-full flex-row gap-3 px-10;
}
/* attachment */
.aui-attachment-root {
@apply relative mt-3 flex h-12 w-40 items-center justify-center gap-2 rounded-lg border p-1;
}
.aui-attachment-preview-trigger {
@apply hover:bg-aui-accent/50 cursor-pointer transition-colors;
}
.aui-attachment-thumb {
@apply bg-aui-muted flex size-10 items-center justify-center rounded border text-sm;
}
.aui-attachment-text {
@apply flex-grow basis-0;
}
.aui-attachment-name {
@apply text-aui-muted-foreground line-clamp-1 text-ellipsis text-xs font-bold;
}
.aui-attachment-type {
@apply text-aui-muted-foreground text-xs;
}
.aui-attachment-remove {
@apply text-aui-muted-foreground [&>svg]:bg-aui-background absolute -right-3 -top-3 size-6 [&>svg]:size-4 [&>svg]:rounded-full;
}
/* user message */
.aui-user-message-root {
@apply grid auto-rows-auto grid-cols-[minmax(72px,1fr)_auto] gap-y-2 [&>*]:col-start-2;
@apply w-full max-w-2xl py-4;
}
:where(.aui-user-message-root) > .aui-user-action-bar-root {
@apply col-start-1 row-start-2 mr-3 mt-2.5;
}
:where(.aui-user-message-root) > .aui-user-message-attachments {
@apply col-span-full col-start-1 row-start-1;
@apply justify-end;
}
:where(.aui-user-message-root) > .aui-user-message-content {
@apply col-start-2 row-start-2;
}
:where(.aui-user-message-root) > .aui-branch-picker-root {
@apply col-span-full col-start-1 row-start-3;
@apply -mr-1 justify-end;
}
.aui-user-message-content {
@apply bg-aui-muted text-aui-foreground max-w-xl break-words rounded-3xl px-5 py-2.5;
}
.aui-user-message-attachments {
@apply flex w-full flex-row gap-3;
}
/* user action bar */
.aui-user-action-bar-root {
@apply flex flex-col items-end;
}
/* edit composer */
.aui-edit-composer-root {
@apply bg-aui-muted my-4 flex w-full max-w-2xl flex-col gap-2 rounded-xl;
}
.aui-edit-composer-input {
@apply text-aui-foreground flex h-8 w-full resize-none bg-transparent p-4 pb-0 outline-none;
}
.aui-edit-composer-footer {
@apply mx-3 mb-3 flex items-center justify-center gap-2 self-end;
}
/* assistant message */
.aui-assistant-message-root {
@apply grid grid-cols-[auto_auto_1fr] grid-rows-[auto_1fr];
@apply relative w-full max-w-2xl py-4;
}
:where(.aui-assistant-message-root) > .aui-avatar-root {
@apply col-start-1 row-span-full row-start-1 mr-4;
}
:where(.aui-assistant-message-root) > .aui-branch-picker-root {
@apply col-start-2 row-start-2;
@apply -ml-2 mr-2;
}
:where(.aui-assistant-message-root) > .aui-assistant-action-bar-root {
@apply col-start-3 row-start-2;
@apply -ml-1;
}
:where(.aui-assistant-message-root) > .aui-assistant-message-content {
@apply col-span-2 col-start-2 row-start-1 my-1.5;
}
.aui-assistant-message-content {
@apply text-aui-foreground max-w-xl break-words leading-7;
}
/* assistant action bar */
.aui-assistant-action-bar-root {
@apply text-aui-muted-foreground flex gap-1;
}
:where(.aui-assistant-action-bar-root)[data-floating] {
@apply bg-aui-background absolute rounded-md border p-1 shadow-sm;
}
:where(.aui-assistant-action-bar-feedback-positive)[data-submitted] {
@apply text-green-600 hover:text-green-700 dark:text-green-500 dark:hover:text-green-400;
}
:where(.aui-assistant-action-bar-feedback-negative)[data-submitted] {
@apply text-red-600 hover:text-red-700 dark:text-red-500 dark:hover:text-red-400;
}
/* branch picker */
.aui-branch-picker-root {
@apply text-aui-muted-foreground inline-flex items-center text-xs;
}
.aui-branch-picker-state {
@apply font-medium;
}
/* text */
.aui-text {
@apply whitespace-pre-line;
}
.aui-text-running::after {
@apply animate-pulse font-sans content-['\25CF'] ltr:ml-1 rtl:mr-1;
}