@hummingbirdui/hummingbird
Version:
An open-source system designed for rapid development, without sacrificing the granular control of utility-first CSS.
146 lines (132 loc) • 4.14 kB
CSS
@utility input-group {
@layer base {
&:has(.form-control-fill, .form-select-fill) {
.input-group-text {
--input-group-addon-border-color: transparent;
--input-group-addon-bg: --alpha(var(--background-color-emphasis) / 0.8);
}
}
@apply relative w-full
flex flex-wrap items-stretch;
> .form-control-fill,
> .form-control,
> .form-select-fill,
> .form-select,
> .form-floating {
@apply relative
flex-[1_1_auto]
w-[1%] min-w-0;
}
> .form-control-fill:focus,
> .form-control:focus,
> .form-select-fill:focus,
> .form-select:focus,
> .form-floating:focus-within {
@apply z-5;
}
.btn {
@apply relative z-2;
@variant focus {
@apply z-5;
}
}
&:not(.has-validation) {
> :not(:last-child):not([data-bs-toggle='dropdown']):not(.dropdown-menu):not(.form-floating),
> [data-bs-toggle='dropdown']:nth-last-child(n + 3),
> .form-floating:not(:last-child) > .form-control-fill,
> .form-floating:not(:last-child) > .form-control,
> .form-floating:not(:last-child) > .form-select-fill,
> .form-floating:not(:last-child) > .form-select {
@apply rounded-r-none;
}
}
&.has-validation {
> :nth-last-child(n + 3):not([data-bs-toggle='dropdown']):not(.dropdown-menu):not(.form-floating),
> [data-bs-toggle='dropdown']:nth-last-child(n + 4),
> .form-floating:nth-last-child(n + 3) > .form-control-fill,
> .form-floating:nth-last-child(n + 3) > .form-control,
> .form-floating:nth-last-child(n + 3) > .form-select-fill,
> .form-floating:nth-last-child(n + 3) > .form-select {
@apply rounded-r-none;
}
}
> :not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(
.invalid-feedback
) {
@apply rounded-l-none -ml-[var(--input-btn-border-width)];
}
> .form-floating:not(:first-child) {
> .form-control-fill,
> .form-control,
> .form-select-fill,
> .form-select {
@apply rounded-l-none;
}
}
}
}
@utility input-group-text {
@layer base {
--input-group-addon-padding-x: var(--input-btn-padding-x);
--input-group-addon-padding-y: var(--input-btn-padding-y);
--input-group-addon-font-weight: var(--input-font-weight, 400);
--input-group-addon-bg: var(--background-color-subtle);
--input-group-addon-color: var(--input-color);
--input-group-addon-border-color: var(--border-color-base);
--input-group-addon-radius: var(--input-btn-radius);
--input-group-addon-font-size: var(--input-btn-font-size);
--input-group-addon-line-height: var(--input-btn-line-height);
@apply flex items-center
py-[var(--input-group-addon-padding-y)] px-[var(--input-group-addon-padding-x)]
text-[length:var(--input-group-addon-font-size)]
font-[var(--input-group-addon-font-weight)]
leading-[var(--input-group-addon-line-height)]
text-[var(--input-group-addon-color)]
text-center
whitespace-nowrap
bg-[var(--input-group-addon-bg)]
border-[length:var(--input-btn-border-width)]
border-[var(--input-group-addon-border-color)]
rounded-[var(--input-group-addon-radius)];
}
}
@utility input-group-lg {
> .form-control-fill,
> .form-control {
@apply form-control-lg;
}
> .form-select-fill,
> .form-select {
@apply form-select-lg;
}
> .btn {
@apply btn-lg;
}
@layer base {
> .input-group-text {
--input-group-addon-padding-y: --spacing(2.25);
--input-group-addon-font-size: var(--text-base);
}
}
}
@utility input-group-sm {
> .form-control-fill,
> .form-control {
@apply form-control-sm;
}
> .form-select-fill,
> .form-select {
@apply form-select-sm;
}
> .btn {
@apply btn-sm;
}
@layer base {
> .input-group-text {
--input-group-addon-padding-x: --spacing(3);
--input-group-addon-padding-y: --spacing(1.25);
--input-group-addon-radius: var(--radius-sm);
--input-group-addon-line-height: 1.25;
}
}
}