From 1907498927b2d29fe58b7507db6eb83b783e5747 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B8=85=E5=87=A4?= Date: Mon, 26 Oct 2026 17:56:01 +0800 Subject: [PATCH 1/2] =?UTF-8?q?fix(textarea):=20=E9=BB=98=E8=AE=A4?= =?UTF-8?q?=E5=B0=BA=E5=AF=B8=E5=AD=97=E5=8F=B7=E4=B8=8E=E5=AD=97=E9=87=8D?= =?UTF-8?q?=E5=AF=B9=E9=BD=90=20Input=EF=BC=8814px=20/=20450=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Refs MEMOH-232 --- src/components/textarea/Textarea.vue | 4 +++- src/style.css | 5 +++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/components/textarea/Textarea.vue b/src/components/textarea/Textarea.vue index 0c9929c..3b41509 100644 --- a/src/components/textarea/Textarea.vue +++ b/src/components/textarea/Textarea.vue @@ -24,7 +24,9 @@ const modelValue = useVModel(props, 'modelValue', emits, { const sizeClass = computed(() => ({ sm: 'min-h-14 px-2.5 py-1.5 text-body', - default: 'min-h-16 px-3 py-2 text-label', + // Default matches Input (text-control + font-medium) so a text field and a + // textarea in the same form read as one family, placeholders included. + default: 'min-h-16 px-3 py-2 text-control font-medium', lg: 'min-h-20 px-3.5 py-2.5 text-control', }[props.size])) diff --git a/src/style.css b/src/style.css index b3653e6..192dc7f 100644 --- a/src/style.css +++ b/src/style.css @@ -2034,8 +2034,9 @@ Tuned for variable Latin + CJK fonts. Weight is ROLE-MAPPED via the --font-weight-* overrides below — do not free-style: · font-semibold (520) → surface / section titles (Card / Dialog / Sheet) - · font-medium (450) → labels, button text, badges, small/inline titles, emphasis - · font-normal (360) → body, descriptions, field values, placeholder, input text */ + · font-medium (450) → labels, button text, badges, small/inline titles, emphasis, + and text typed into Input / Textarea (placeholder included) + · font-normal (360) → body, descriptions, read-only field values */ --text-caption: 0.6875rem; /* 11px — badges, tiny meta */ --text-caption--line-height: 1rem; --text-caption--letter-spacing: -0.04px; From 0521c23504bc0d3b140529e541e143ccf198e669 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B8=85=E5=87=A4?= Date: Tue, 27 Oct 2026 10:34:30 +0800 Subject: [PATCH 2/2] =?UTF-8?q?fix(select):=20=E9=BB=98=E8=AE=A4=E5=B0=BA?= =?UTF-8?q?=E5=AF=B8=E8=A7=A6=E5=8F=91=E5=99=A8=E5=AD=97=E5=8F=B7=E4=B8=8E?= =?UTF-8?q?=E5=AD=97=E9=87=8D=E5=AF=B9=E9=BD=90=20Input=EF=BC=8814px=20/?= =?UTF-8?q?=20450=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Refs MEMOH-232 --- src/lib/trigger.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/lib/trigger.ts b/src/lib/trigger.ts index bdfb7a9..77b14ab 100644 --- a/src/lib/trigger.ts +++ b/src/lib/trigger.ts @@ -7,6 +7,8 @@ // - width: Select wants `w-fit`, Combobox wants `w-full`. // - height/text scale: driven by the `data-size` attribute the consumer sets // (`data-size=sm|default|lg`), matching how reka's SelectTrigger sizes. +// - default size text matches Input (text-control + font-medium): a select +// sitting between text fields in a form must read at the same size/weight. // - placeholder tint: driven by a `data-placeholder` attribute (reka sets it on // SelectTrigger; the Combobox sets it manually when no value is selected). // cursor-pointer lives here (not per consumer): the trigger is a button, and @@ -17,6 +19,6 @@ export const selectTriggerClass = 'flex items-center justify-between gap-2 rounded-md px-3 py-2 tracking-[0.01em] whitespace-nowrap outline-none select-none cursor-pointer ' + 'data-[placeholder]:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-40 ' - + 'data-[size=sm]:h-8 data-[size=sm]:text-body data-[size=default]:h-9 data-[size=default]:text-label data-[size=lg]:h-10 data-[size=lg]:text-control data-[size=lg]:px-3.5 ' + + 'data-[size=sm]:h-8 data-[size=sm]:text-body data-[size=default]:h-9 data-[size=default]:text-control data-[size=default]:font-medium data-[size=lg]:h-10 data-[size=lg]:text-control data-[size=lg]:px-3.5 ' + '*:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 ' + '[&_svg:not([class*=text-])]:text-muted-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*=size-])]:size-4'