Portal/rsconcept/frontend/src/styling/utilities.css

208 lines
4.1 KiB
CSS
Raw Normal View History

2025-03-13 13:30:31 +03:00
/**
* Module: Utility classes for style features.
2025-03-13 13:30:31 +03:00
*/
2025-02-21 21:13:40 +03:00
@utility font-main {
font-family: var(--font-main);
}
@utility font-controls {
font-family: var(--font-ui);
2025-03-19 16:07:46 +03:00
font-weight: 700;
2025-02-21 21:13:40 +03:00
}
@utility font-math {
font-family: var(--font-math);
}
2025-04-12 21:47:46 +03:00
@utility cc-selected {
color: var(--color-selected-foreground);
background-color: var(--color-selected);
2025-02-21 21:13:40 +03:00
}
2025-04-12 21:47:46 +03:00
@utility cc-hover {
2025-02-21 21:13:40 +03:00
&:hover:not(:disabled) {
2025-04-12 21:47:46 +03:00
background-color: var(--color-accent);
2025-02-21 21:13:40 +03:00
}
}
2025-04-12 21:47:46 +03:00
@utility focus-outline {
--focus-color: var(--color-ring);
2025-02-21 21:13:40 +03:00
2025-04-12 21:47:46 +03:00
&:focus-visible {
outline: 2px solid var(--focus-color);
border-color: var(--focus-color);
2025-02-21 21:13:40 +03:00
}
2025-04-12 21:47:46 +03:00
&[aria-invalid='true'] {
--focus-color: var(--color-destructive);
2025-02-21 21:13:40 +03:00
}
}
@utility focus-frame {
2025-04-12 21:47:46 +03:00
--focus-color: var(--color-ring);
2025-02-21 21:13:40 +03:00
2025-04-12 21:47:46 +03:00
&:focus-visible,
2025-02-21 21:13:40 +03:00
&:has(:focus-visible) {
2025-04-12 21:47:46 +03:00
outline: 2px solid var(--focus-color);
border-color: var(--focus-color);
2025-02-21 21:13:40 +03:00
}
2025-04-12 21:47:46 +03:00
&[aria-invalid='true'] {
--focus-color: var(--color-destructive);
}
2025-02-21 21:13:40 +03:00
}
2025-04-12 21:47:46 +03:00
@utility cc-controls {
color: var(--color-muted-foreground);
2025-02-21 21:13:40 +03:00
background-color: transparent;
2025-02-21 21:13:40 +03:00
&:disabled {
2025-04-13 19:05:47 +03:00
color: var(--color-muted-foreground);
opacity: 0.75;
}
}
@utility cc-remove {
color: var(--color-muted-foreground);
&:hover:not(:disabled) {
color: var(--color-destructive);
2025-02-21 21:13:40 +03:00
}
}
@utility icon-primary {
:not([disabled]) > & {
2025-04-12 21:47:46 +03:00
color: var(--color-primary);
2024-12-17 11:37:42 +03:00
}
2024-06-07 20:17:03 +03:00
}
2025-02-21 21:13:40 +03:00
@utility icon-red {
:not([disabled]) > & {
2025-04-12 21:47:46 +03:00
color: var(--color-destructive);
2025-02-21 21:13:40 +03:00
}
}
@utility icon-green {
:not([disabled]) > & {
2025-04-12 21:47:46 +03:00
color: var(--color-constructive);
2025-02-21 21:13:40 +03:00
}
}
@utility inline-icon {
display: inline-block;
2025-02-21 21:13:40 +03:00
margin-left: 0.1rem;
margin-right: 0.1rem;
transform: translate(0, -0.2rem);
font-size: 1.25rem;
2025-04-12 21:47:46 +03:00
color: var(--color-primary);
2025-02-21 21:13:40 +03:00
}
@utility cc-column {
display: flex;
flex-direction: column;
gap: 0.75rem;
}
@utility cc-icons {
display: flex;
gap: 0.25rem;
}
@utility cc-scroll-row {
scroll-snap-align: start;
scroll-snap-stop: always;
}
@utility cc-scroll-y {
overflow-y: auto;
overscroll-behavior-y: contain;
scroll-snap-type: y mandatory;
}
@utility cc-shadow-border {
2025-04-12 21:47:46 +03:00
box-shadow: 0 1px 2px 0 var(--color-border);
2025-02-21 21:13:40 +03:00
}
@utility cc-fade-in {
opacity: 1;
transition-property: opacity;
2025-03-13 01:14:47 +03:00
transition-timing-function: var(--ease-bezier);
2025-02-21 21:13:40 +03:00
transition-duration: var(--duration-fade);
@starting-style {
opacity: 0;
}
}
@utility cc-animate-position {
transition-property: transform top left bottom right margin padding;
2025-03-13 01:14:47 +03:00
transition-timing-function: var(--ease-bezier);
2025-02-21 21:13:40 +03:00
transition-duration: var(--duration-move);
}
@utility cc-animate-modal {
clip-path: inset(0% 0% 0% 0%);
opacity: 1;
transition-property: clip-path, opacity;
2025-03-13 01:14:47 +03:00
transition-timing-function: var(--ease-bezier);
2025-02-21 21:13:40 +03:00
transition-duration: var(--duration-modal);
@starting-style {
clip-path: inset(50% 50% 50% 50%);
opacity: 0;
}
}
@utility cc-animate-color {
transition-property: color, background-color;
2025-03-13 01:14:47 +03:00
transition-timing-function: var(--ease-bezier);
2025-02-21 21:13:40 +03:00
transition-duration: var(--duration-select);
2025-02-22 14:03:13 +03:00
}
2025-03-09 21:57:21 +03:00
2025-04-07 22:25:53 +03:00
@utility cc-animate-background {
transition-property: background-color;
transition-timing-function: var(--ease-bezier);
transition-duration: var(--duration-select);
}
@utility cc-mask-sides {
--mask-border-size: 2rem;
mask-image: linear-gradient(to top, transparent, black calc(var(--mask-border-size))),
linear-gradient(to bottom, transparent, black calc(var(--mask-border-size))),
linear-gradient(to left, transparent, black calc(var(--mask-border-size))),
linear-gradient(to right, transparent, black calc(var(--mask-border-size)));
mask-composite: intersect;
}
2025-04-16 15:22:04 +03:00
@utility duration-select {
--tw-duration: var(--duration-select);
transition-duration: var(--duration-select);
}
@utility duration-dropdown {
--tw-duration: var(--duration-dropdown);
transition-duration: var(--duration-dropdown);
}
@utility duration-modal {
--tw-duration: var(--duration-modal);
transition-duration: var(--duration-modal);
}
@utility duration-fade {
--tw-duration: var(--duration-fade);
transition-duration: var(--duration-fade);
}
@utility duration-move {
--tw-duration: var(--duration-move);
transition-duration: var(--duration-move);
}