diff --git a/ordinis-admin-ui/src/components/form/SchemaDrivenForm.tsx b/ordinis-admin-ui/src/components/form/SchemaDrivenForm.tsx
index 28e4c11..98abaf0 100644
--- a/ordinis-admin-ui/src/components/form/SchemaDrivenForm.tsx
+++ b/ordinis-admin-ui/src/components/form/SchemaDrivenForm.tsx
@@ -747,6 +747,13 @@ const ReferenceSelectField = ({
// scroll и type-ahead search работают OOTB. SingleSelect popup
// через createPortal с position:fixed не делает auto-flip и уходит
// за нижний край когда триггер близко к низу modal'а.
+ // Caret chevron как inline SVG в data-uri — match'ит SingleSelect
+ // CaretDown иконку (color carbon/40, weight 'regular', size ~16).
+ // appearance-none убирает OS default стрелку, иначе на macOS Safari
+ // рендерится двойной chevron + native blue border.
+ const caretSvg =
+ "url(\"data:image/svg+xml;utf8,\")"
+
return (
field.onChange(e.target.value || undefined)}
disabled={isLoading}
aria-invalid={Boolean(errorMsg)}
+ // appearance-none + custom caret = одинаковый look на всех
+ // платформах. py-2 (8px) match'ит TextInput высоту.
+ // pr-10 даёт место под chevron, остальной padding как у TextInput.
className={[
- 'w-full border rounded-sm px-3 py-2 text-sm font-secondary',
+ 'w-full appearance-none border rounded-sm pl-3 pr-10 py-2 text-sm font-secondary',
'bg-white text-black transition-colors',
+ 'bg-no-repeat bg-[right_0.75rem_center] bg-[length:1rem_1rem]',
'focus:outline-none focus:ring-1 focus:ring-ultramarain focus:border-ultramarain',
errorMsg ? 'border-mars' : 'border-regolith hover:border-carbon/40',
isLoading ? 'cursor-wait text-carbon/60' : 'cursor-pointer',
].join(' ')}
+ style={{ backgroundImage: caretSvg }}
>
{options.map((opt) => (