@stillwind-property --name {
syntax: "<angle>";
inherits: false;
initial-value: 0deg;
}@stillwind-property registers a custom property. The compiler emits a
standard @property rule, and an initial value for each element, only when the
generated CSS needs the property. Write it at the top level of the stylesheet.
Example
Stylesheet
@stillwind-property --spin-angle {
syntax: "<angle>";
inherits: false;
initial-value: 0deg;
}
@utility spin-* {
--spin-angle: --value([angle]);
rotate: var(--spin-angle);
}Source
import { style } from "stillwind/react";
export const icon = style("spin-[45deg]");Compiled code
export const icon = {className:"sw_7ic77"};Generated stylesheet without preflight
/*! stillwind v0.0.0 | MIT License | https://stillwind.dev */
/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */
@layer properties, theme, base, components, utilities;
@layer utilities {
.sw_7ic77 {
--spin-angle: 45deg;
rotate: var(--spin-angle);
}
}
@layer properties {
@supports (((-webkit-hyphens: none)) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color: rgb(from red r g b)))) {
*, :before, :after, ::backdrop {
--spin-angle: 0deg;
}
}
}
@property --spin-angle {
syntax: "<angle>";
inherits: false;
initial-value: 0deg;
}The properties slot places the @property rule. The property-initials slot
places the initial values, for browsers that ignore @property. See
@stillwind-slot.
Descriptors
The standard @property descriptors, syntax, inherits, and initial-value,
go into the emitted rule as written. The compiler reads the other descriptors and
removes them from the output:
| Descriptor | Value |
|---|---|
activation |
When to emit: referenced (default), declared, either, or dependency |
depends-on |
Space-separated custom properties that are emitted with this one |
group |
Space-separated group names. The registrations of a group are emitted together. |
activate-on |
Space-separated ordinary properties. A declaration of one of them emits this registration. |
value-for |
Comma-separated ordinary properties whose value rules check the values of this property |
referenced emits the registration when a rule reads the property through
var(). declared emits it when a rule sets the property. either emits it in
both cases. dependency emits it only through depends-on or group.
A utility can also require a registration with @stillwind-require-properties.
Value checks
value-for makes lint rules check the value of the custom property as a value
of the listed properties:
@stillwind-property --box-size {
syntax: "*";
inherits: false;
value-for: width, height;
}
@utility box-* {
--box-size: --value([length]);
}no-arbitrary-spacing,
no-arbitrary-colors, and
no-restricted-length-units check
box-[13px] as a width and a height value. Each listed property uses its own
rule settings.
Registrations with the same name
The last registration of a name decides. A registration in your stylesheet
replaces the registration of a package. An ordinary @property rule in your
stylesheet stays as written, and the compiler does not emit a registration with
the same name.