- {!shouldLabelBeOutside ? labelContent : null}
+ {!isOutsideLeft ? labelContent : null}
{startContent}
diff --git a/packages/components/select/src/use-select.ts b/packages/components/select/src/use-select.ts
index a33882175d..56762e95f7 100644
--- a/packages/components/select/src/use-select.ts
+++ b/packages/components/select/src/use-select.ts
@@ -262,6 +262,7 @@ export function useSelect(originalProps: UseSelectProps) {
labelPlacement === "outside-left" ||
(labelPlacement === "outside" && (hasPlaceholder || !!originalProps.isMultiline));
const shouldLabelBeInside = labelPlacement === "inside";
+ const isOutsideLeft = labelPlacement === "outside-left";
const isFilled =
state.isOpen ||
hasPlaceholder ||
@@ -582,6 +583,7 @@ export function useSelect(originalProps: UseSelectProps) {
hasPlaceholder,
renderValue,
selectionMode,
+ isOutsideLeft,
disableAnimation,
shouldLabelBeOutside,
shouldLabelBeInside,
diff --git a/packages/core/theme/src/components/input.ts b/packages/core/theme/src/components/input.ts
index b2e7c87e87..2f2c45ef5e 100644
--- a/packages/core/theme/src/components/input.ts
+++ b/packages/core/theme/src/components/input.ts
@@ -33,19 +33,15 @@ const input = tv({
"block",
"text-small",
"text-foreground-500",
- "opacity-70",
- "group-data-[filled-within=true]:opacity-100",
],
mainWrapper: "h-full",
inputWrapper:
"relative w-full inline-flex tap-highlight-transparent flex-row items-center shadow-sm px-3 gap-3",
innerWrapper: "inline-flex w-full items-center h-full box-border",
input: [
- "opacity-70",
"w-full font-normal bg-transparent !outline-none placeholder:text-foreground-500 focus-visible:outline-none",
"data-[has-start-content=true]:ps-1.5",
"data-[has-end-content=true]:pe-1.5",
- "group-data-[has-value=true]:opacity-100",
],
clearButton: [
"p-2",
@@ -77,8 +73,6 @@ const input = tv({
"data-[hover=true]:bg-default-200",
"group-data-[focus=true]:bg-default-100",
],
- input: "placeholder:text-default-foreground",
- label: "text-default-foreground",
},
faded: {
inputWrapper: [
@@ -87,8 +81,7 @@ const input = tv({
"border-default-200",
"data-[hover=true]:border-default-400",
],
- input: "placeholder:text-default-foreground",
- label: "text-default-foreground",
+ value: "group-data-[has-value=true]:text-default-foreground",
},
bordered: {
inputWrapper: [
@@ -97,8 +90,6 @@ const input = tv({
"data-[hover=true]:border-default-400",
"group-data-[focus=true]:border-default-foreground",
],
- input: "placeholder:text-foreground",
- label: "text-foreground",
},
underlined: {
inputWrapper: [
@@ -124,14 +115,11 @@ const input = tv({
"group-data-[focus=true]:after:w-full",
],
innerWrapper: "pb-1",
- input: "placeholder:text-foreground",
- label: "text-foreground",
+ label: "group-data-[filled-within=true]:text-foreground",
},
},
color: {
- default: {
- label: "group-data-[filled-within=true]:opacity-80",
- },
+ default: {},
primary: {},
secondary: {},
success: {},
@@ -175,7 +163,6 @@ const input = tv({
},
labelPlacement: {
outside: {
- label: "text-foreground pb-1.5",
mainWrapper: "flex flex-col",
},
"outside-left": {
@@ -257,6 +244,13 @@ const input = tv({
},
compoundVariants: [
// flat & color
+ {
+ variant: "flat",
+ color: "default",
+ class: {
+ input: "group-data-[has-value=true]:text-default-foreground",
+ },
+ },
{
variant: "flat",
color: "primary",
@@ -380,6 +374,13 @@ const input = tv({
},
},
// underlined & color
+ {
+ variant: "underlined",
+ color: "default",
+ class: {
+ input: "group-data-[has-value=true]:text-foreground",
+ },
+ },
{
variant: "underlined",
color: "primary",
@@ -461,6 +462,22 @@ const input = tv({
label: "text-danger",
},
},
+ // labelPlacement=inside & default
+ {
+ labelPlacement: "inside",
+ color: "default",
+ class: {
+ label: "group-data-[filled-within=true]:text-default-600",
+ },
+ },
+ // labelPlacement=outside & default
+ {
+ labelPlacement: "outside",
+ color: "default",
+ class: {
+ label: "group-data-[filled-within=true]:text-foreground",
+ },
+ },
// radius-full & size
{
radius: "full",
diff --git a/packages/core/theme/src/components/select.ts b/packages/core/theme/src/components/select.ts
index 61f31c8d53..7b67aad3c7 100644
--- a/packages/core/theme/src/components/select.ts
+++ b/packages/core/theme/src/components/select.ts
@@ -15,8 +15,6 @@ const select = tv({
"text-small",
"text-foreground-500",
"pointer-events-none",
- "opacity-70",
- "group-data-[filled=true]:opacity-100",
],
mainWrapper: "w-full flex flex-col",
trigger:
@@ -25,13 +23,7 @@ const select = tv({
"inline-flex h-full w-[calc(100%_-_theme(spacing.unit-6))] min-h-unit-4 items-center gap-1.5 box-border",
selectorIcon: "absolute right-3 w-unit-4 h-unit-4",
spinner: "absolute right-3",
- value: [
- "font-normal",
- "w-full",
- "text-left",
- "opacity-70",
- "group-data-[has-value=true]:opacity-100",
- ],
+ value: ["text-foreground-500", "font-normal", "w-full", "text-left"],
listboxWrapper: "scroll-py-6 max-h-64 w-full",
listbox: "",
popoverContent: "w-full p-1 overflow-hidden",
@@ -47,8 +39,6 @@ const select = tv({
"data-[hover=true]:bg-default-200",
"group-data-[focus=true]:bg-default-100",
],
- label: "text-default-foreground",
- value: "placeholder:text-default-foreground",
},
faded: {
trigger: [
@@ -57,8 +47,7 @@ const select = tv({
"border-default-200",
"data-[hover=true]:border-default-400",
],
- label: "text-default-foreground",
- value: "placeholder:text-default-foreground",
+ value: "group-data-[has-value=true]:text-default-foreground",
},
bordered: {
trigger: [
@@ -69,8 +58,6 @@ const select = tv({
"data-[focus=true]:border-default-foreground",
"data-[focus=true]:border-default-foreground",
],
- label: "text-foreground",
- value: "placeholder:text-foreground",
},
underlined: {
trigger: [
@@ -96,14 +83,11 @@ const select = tv({
"data-[open=true]:after:w-full",
"data-[focus=true]:after:w-full",
],
- label: "text-foreground",
- value: "placeholder:text-foreground",
+ label: "group-data-[filled=true]:text-foreground",
},
},
color: {
- default: {
- label: "group-data-[filled=true]:opacity-80",
- },
+ default: {},
primary: {},
secondary: {},
success: {},
@@ -145,11 +129,10 @@ const select = tv({
labelPlacement: {
outside: {
base: "flex flex-col",
- label: "text-foreground pb-1.5",
},
"outside-left": {
base: "flex-row items-center flex-nowrap items-start",
- label: "relative text-foreground pr-2",
+ label: "relative pr-2 text-foreground",
},
inside: {
label: "text-tiny cursor-pointer",
@@ -228,6 +211,13 @@ const select = tv({
},
compoundVariants: [
// flat & color
+ {
+ variant: "flat",
+ color: "default",
+ class: {
+ value: "group-data-[has-value=true]:text-default-foreground",
+ },
+ },
{
variant: "flat",
color: "primary",
@@ -343,6 +333,14 @@ const select = tv({
},
},
// underlined & color
+ // underlined & color
+ {
+ variant: "underlined",
+ color: "default",
+ class: {
+ value: "group-data-[has-value=true]:text-foreground",
+ },
+ },
{
variant: "underlined",
color: "primary",
@@ -424,6 +422,22 @@ const select = tv({
label: "text-danger",
},
},
+ // labelPlacement=outside & default
+ {
+ labelPlacement: "inside",
+ color: "default",
+ class: {
+ label: "group-data-[filled=true]:text-default-600",
+ },
+ },
+ // labelPlacement=outside & default
+ {
+ labelPlacement: "outside",
+ color: "default",
+ class: {
+ label: "group-data-[filled=true]:text-foreground",
+ },
+ },
// radius-full & size
{
radius: "full",