diff --git a/packages/ariakit/src/input/TextInput.tsx b/packages/ariakit/src/input/TextInput.tsx index aa21323481..d4b9817f4a 100644 --- a/packages/ariakit/src/input/TextInput.tsx +++ b/packages/ariakit/src/input/TextInput.tsx @@ -25,7 +25,7 @@ export const TextInput = forwardRef< onChange, onSubmit, autoComplete, - rightSection, // TODO: add rightSection + rightSection, ...rest } = props; @@ -40,7 +40,7 @@ export const TextInput = forwardRef< className={mergeCSSClasses( "bn-ak-input", className || "", - variant === "large" ? "bn-ak-input-large" : "" + variant === "large" ? "bn-ak-input-large" : "", )} ref={ref} name={name} @@ -53,6 +53,7 @@ export const TextInput = forwardRef< onSubmit={onSubmit} autoComplete={autoComplete} /> + {rightSection} > ); diff --git a/packages/ariakit/src/style.css b/packages/ariakit/src/style.css index feeeffe7ea..23ab0d04fa 100644 --- a/packages/ariakit/src/style.css +++ b/packages/ariakit/src/style.css @@ -11,6 +11,10 @@ gap: 0.5rem; } +.bn-ak-input-wrapper svg { + width: 24px; +} + .bn-ak-toolbar { height: fit-content; overflow: scroll; @@ -23,11 +27,15 @@ .bn-toolbar .bn-ak-button[data-selected] { padding-top: 0.125rem; - box-shadow: inset 0 0 0 1px var(--border), inset 0 2px 0 var(--border); + box-shadow: + inset 0 0 0 1px var(--border), + inset 0 2px 0 var(--border); } .bn-toolbar .bn-ak-button[data-selected]:where(.dark, .dark *) { - box-shadow: inset 0 0 0 1px var(--border), inset 0 1px 1px 1px var(--shadow); + box-shadow: + inset 0 0 0 1px var(--border), + inset 0 1px 1px 1px var(--shadow); } .bn-toolbar .bn-ak-popover { @@ -64,9 +72,11 @@ overflow: visible; } -.bn-ariakit .bn-suggestion-menu { +.bn-ariakit .bn-suggestion-menu, +.bn-ariakit .ai-suggestion-menu { height: fit-content; max-height: inherit; + overflow: auto; } .bn-ariakit .bn-color-picker-dropdown { @@ -106,13 +116,34 @@ --border: rgb(0 0 0/13%); --highlight: rgb(255 255 255/20%); --shadow: rgb(0 0 0/10%); - box-shadow: inset 0 0 0 1px var(--border), inset 0 2px 0 var(--highlight), - inset 0 -1px 0 var(--shadow), 0 1px 1px var(--shadow); + box-shadow: + inset 0 0 0 1px var(--border), + inset 0 2px 0 var(--highlight), + inset 0 -1px 0 var(--shadow), + 0 1px 1px var(--shadow); font-size: 0.7rem; border-radius: 4px; padding-inline: 4px; } +@keyframes spin { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} + +.bn-ariakit .bn-suggestion-menu-loader { + align-items: center; + animation: spin 1s linear infinite; + display: flex; + height: 16px; + justify-content: center; + width: 16px; +} + .bn-ariakit .bn-grid-suggestion-menu { background: var(--bn-colors-menu-background); border-radius: var(--bn-border-radius-large); @@ -263,7 +294,7 @@ .bn-ak-author-info { align-items: center; display: flex; - gap: 16px + gap: 16px; } .bn-ariakit .bn-comment-editor .bn-editor { @@ -319,6 +350,48 @@ padding: 0; } +.bn-ariakit .bn-combobox .bn-ak-input-wrapper { + display: flex; + border-radius: 0.5rem; + border-width: 1px; + border-style: solid; + border-color: hsl(204 20% 88%); + background-color: hsl(204 20% 100%); + padding: 0.5rem; + color: hsl(204 4% 0%); + box-shadow: + 0 10px 15px -3px rgb(0 0 0 / 0.1), + 0 4px 6px -4px rgb(0 0 0 / 0.1); +} + +.bn-ariakit .bn-combobox .bn-ak-input-wrapper:where(.dark, .dark *) { + border-color: hsl(204 4% 24%); + background-color: hsl(204 4% 16%); + color: hsl(204 20% 100%); + box-shadow: + 0 10px 15px -3px rgb(0 0 0 / 0.25), + 0 4px 6px -4px rgb(0 0 0 / 0.1); +} + +.bn-ariakit .bn-combobox .bn-ak-input { + background: transparent; + border: none; + box-shadow: none; + outline: none; +} + +.bn-ariakit .bn-combobox .bn-combobox-icon, +.bn-ariakit .bn-combobox .bn-combobox-right-section { + align-items: start; + display: flex; + justify-content: center; + width: 24px; +} + +.bn-ariakit .bn-combobox .bn-combobox-error { + color: var(--bn-colors-highlights-red-background); +} + .bn-ariakit .bn-comment-actions-wrapper { align-items: start; display: flex; @@ -355,4 +428,4 @@ .bn-ariakit .bn-thread.selected .bn-ak-author-info, .bn-ariakit .bn-thread.selected .bn-ak-expand-sections-prompt { color: var(--bn-colors-selected-text); -} \ No newline at end of file +} diff --git a/packages/ariakit/src/suggestionMenu/SuggestionMenuLoader.tsx b/packages/ariakit/src/suggestionMenu/SuggestionMenuLoader.tsx index ff43ed5ea8..987142824b 100644 --- a/packages/ariakit/src/suggestionMenu/SuggestionMenuLoader.tsx +++ b/packages/ariakit/src/suggestionMenu/SuggestionMenuLoader.tsx @@ -6,13 +6,22 @@ export const SuggestionMenuLoader = forwardRef< HTMLDivElement, ComponentProps["SuggestionMenu"]["Loader"] >((props, ref) => { - const { className, children, ...rest } = props; + const { className, ...rest } = props; assertEmpty(rest); return (