Security News
Research
Data Theft Repackaged: A Case Study in Malicious Wrapper Packages on npm
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
stylelint-use-logical
Advanced tools
Property Use Logical is a stylelint rule to enforce the usage of Logical Properties and Values in CSS.
Physical dimensions and directions are described left to right and top to bottom, while their logical counterparts are described start to end and inline or block.
For example, to add spacing before the start of a paragraph, we might use the
physical padding-left
property.
p {
padding-left: 2em;
}
Were the content Hebrew or Arabic — flowing right to left — then we might
use alternating padding-left
and padding-right
properties.
p:dir(ltr) {
padding-left: 2em;
}
p:dir(rtl) {
padding-right: 2em;
}
Selector weight aside, we can instead use the logical padding-inline-start
property.
p {
padding-inline-start: 2em;
}
Similarly, physical horizontal and vertical dimensions are described more succinctly using their logical counterparts.
h1, h2, h3 {
margin-top: 1em;
margin-bottom: 1em;
}
blockquote {
margin-left: 1em;
margin-right: 1em;
}
/* becomes */
h1, h2, h3 {
margin-block: 1em;
}
blockquote {
margin-inline: 1em;
}
Add stylelint and Property Use Logical to your project.
npm install stylelint stylelint-use-logical --save-dev
Add Property Use Logical to your stylelint configuration.
{
"plugins": [
"stylelint-use-logical"
],
"rules": {
"csstools/use-logical": ("always" || true) || ("ignore" || false || null)
}
}
The "always"
option (alternatively true
) requires logical properties and
values to be used, and the following patterns are not considered violations:
.inset {
inset: 0;
}
.margin {
margin-inline-start: 0;
}
.padding {
padding-inline: 0;
}
.float {
float: inline-start;
}
.text-align {
text-align: start;
}
.text-align-ignored:dir(ltr) {
text-align: left;
}
While the following patterns are considered violations:
.inset {
top: 0;
right: 0;
bottom: 0;
left: 0;
}
.margin {
margin-left: 0;
}
.padding {
padding-left: 0;
padding-right: 0;
}
.float {
float: left;
}
.text-align {
text-align: left;
}
The "ignore"
option (alternatively false
or null
) disables the rule.
The except
option ignores reporting or autofixing properties and values
matching a case-insensitive string or regular expression.
{
"rules": {
"csstools/use-logical": ["always", { "except": ['float', /^margin/i] }]
}
}
The direction
option controls whether left to right or right to left
properties and values should be reported or autofixed.
{
"rules": {
"csstools/use-logical": ["always", { "direction": "ltr" || "rtl" }]
}
}
Assuming left to right directionality:
Physical Property | Logical Property |
---|---|
top | inset-block-start |
right | inset-inline-end |
bottom | inset-block-end |
left | inset-inline-start |
Physical Property | Logical Property |
---|---|
margin-top | margin-block-start |
margin-right | margin-inline-end |
margin-bottom | margin-block-end |
margin-left | margin-inline-start |
Physical Property | Logical Property |
---|---|
padding-top | padding-block-start |
padding-right | padding-inline-end |
padding-bottom | padding-block-end |
padding-left | padding-inline-start |
Physical Property | Logical Property |
---|---|
width | inline-size |
min-width | min-inline-size |
max-width | max-inline-size |
height | block-size |
min-height | min-block-size |
max-height | max-block-size |
FAQs
Enforce usage of logical properties and values in CSS
We found that stylelint-use-logical demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 3 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Research
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
Research
Security News
Attackers used a malicious npm package typosquatting a popular ESLint plugin to steal sensitive data, execute commands, and exploit developer systems.
Security News
The Ultralytics' PyPI Package was compromised four times in one weekend through GitHub Actions cache poisoning and failure to rotate previously compromised API tokens.