Files
bun.sh/src/css/properties/effects.zig
2025-05-31 18:52:18 -07:00

57 lines
1.8 KiB
Zig

pub const css = @import("../css_parser.zig");
const SmallList = css.SmallList;
const CssColor = css.css_values.color.CssColor;
const Length = css.css_values.length.LengthValue;
const NumberOrPercentage = css.css_values.percentage.NumberOrPercentage;
const Angle = css.css_values.angle.Angle;
const Url = css.css_values.url.Url;
/// A value for the [filter](https://drafts.fxtf.org/filter-effects-1/#FilterProperty) and
/// [backdrop-filter](https://drafts.fxtf.org/filter-effects-2/#BackdropFilterProperty) properties.
pub const FilterList = union(enum) {
/// The `none` keyword.
none,
/// A list of filter functions.
filters: SmallList(Filter, 1),
};
/// A [filter](https://drafts.fxtf.org/filter-effects-1/#filter-functions) function.
pub const Filter = union(enum) {
/// A `blur()` filter.
blur: Length,
/// A `brightness()` filter.
brightness: NumberOrPercentage,
/// A `contrast()` filter.
contrast: NumberOrPercentage,
/// A `grayscale()` filter.
grayscale: NumberOrPercentage,
/// A `hue-rotate()` filter.
hue_rotate: Angle,
/// An `invert()` filter.
invert: NumberOrPercentage,
/// An `opacity()` filter.
opacity: NumberOrPercentage,
/// A `saturate()` filter.
saturate: NumberOrPercentage,
/// A `sepia()` filter.
sepia: NumberOrPercentage,
/// A `drop-shadow()` filter.
drop_shadow: DropShadow,
/// A `url()` reference to an SVG filter.
url: Url,
};
/// A [`drop-shadow()`](https://drafts.fxtf.org/filter-effects-1/#funcdef-filter-drop-shadow) filter function.
pub const DropShadow = struct {
/// The color of the drop shadow.
color: CssColor,
/// The x offset of the drop shadow.
x_offset: Length,
/// The y offset of the drop shadow.
y_offset: Length,
/// The blur radius of the drop shadow.
blur: Length,
};