mirror of
https://github.com/Ku6epXBOCTuK/easy-png-tools.git
synced 2026-09-14 13:36:36 +00:00
refactor: update css vars lint rules and fix them
This commit is contained in:
@@ -6,14 +6,14 @@
|
|||||||
// Properties that accept a COLOR.
|
// Properties that accept a COLOR.
|
||||||
// =====================================================================
|
// =====================================================================
|
||||||
export const COLOR_PROPS =
|
export const COLOR_PROPS =
|
||||||
/^(color|background|background-color|border|border-color|border-top|border-right|border-bottom|border-left|outline|outline-color|box-shadow|text-shadow|fill|stroke|fill-color|stroke-color|stop-color|flood-color|lighting-color|column-rule|column-rule-color|text-decoration|text-decoration-color|caret-color|accent-color|border-top-color|border-right-color|border-bottom-color|border-left-color)$/;
|
/^(color|background|background-color|background-image|border|border-color|border-top|border-right|border-bottom|border-left|outline|outline-color|box-shadow|text-shadow|fill|stroke|fill-color|stroke-color|stop-color|flood-color|lighting-color|column-rule|column-rule-color|text-decoration|text-decoration-color|caret-color|accent-color|border-top-color|border-right-color|border-bottom-color|border-left-color)$/;
|
||||||
|
|
||||||
// =====================================================================
|
// =====================================================================
|
||||||
// Properties that accept a SIZE (px/rem/em).
|
// Properties that accept a SIZE (px/rem/em).
|
||||||
// z-index is handled separately (it's an integer, not a length).
|
// z-index is handled separately (it's an integer, not a length).
|
||||||
// =====================================================================
|
// =====================================================================
|
||||||
export const SIZE_PROPS =
|
export const SIZE_PROPS =
|
||||||
/^(width|height|min-width|max-width|min-height|max-height|padding|padding-top|padding-right|padding-bottom|padding-left|margin|margin-top|margin-right|margin-bottom|margin-left|gap|column-gap|row-gap|top|right|bottom|left|inset|font-size|letter-spacing|word-spacing|line-height|border-radius|border-top-left-radius|border-top-right-radius|border-bottom-left-radius|border-bottom-right-radius|border-width|border-top-width|border-right-width|border-bottom-width|border-left-width|flex-basis|background-size|border-spacing)$/;
|
/^(width|height|min-width|max-width|min-height|max-height|padding|padding-top|padding-right|padding-bottom|padding-left|margin|margin-top|margin-right|margin-bottom|margin-left|gap|column-gap|row-gap|top|right|bottom|left|inset|font|font-size|letter-spacing|word-spacing|line-height|border-radius|border-top-left-radius|border-top-right-radius|border-bottom-left-radius|border-bottom-right-radius|border-width|border-top-width|border-right-width|border-bottom-width|border-left-width|flex-basis|background-size|background-position|border-spacing|grid-template-columns|grid-template-rows)$/;
|
||||||
|
|
||||||
// =====================================================================
|
// =====================================================================
|
||||||
// SHORTHAND properties that accept BOTH a color and a size. The browser
|
// SHORTHAND properties that accept BOTH a color and a size. The browser
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import {
|
|||||||
DURATION_PROPS,
|
DURATION_PROPS,
|
||||||
FORBIDDEN_DURATION_TOKEN,
|
FORBIDDEN_DURATION_TOKEN,
|
||||||
FORBIDDEN_SIZE_TOKEN,
|
FORBIDDEN_SIZE_TOKEN,
|
||||||
|
MIXED_PROPS,
|
||||||
SIZE_PROPS,
|
SIZE_PROPS,
|
||||||
} from "./lists.js";
|
} from "./lists.js";
|
||||||
import { getStyleNodeLoc, getStyleRoot } from "./style-context.js";
|
import { getStyleNodeLoc, getStyleRoot } from "./style-context.js";
|
||||||
@@ -125,13 +126,16 @@ export default {
|
|||||||
// Sub-rule 2: sizes.
|
// Sub-rule 2: sizes.
|
||||||
// Fire only on a real remaining px/rem/em token — percentages
|
// Fire only on a real remaining px/rem/em token — percentages
|
||||||
// (width: 80%) and unitless values (line-height: 1.5) stay legal.
|
// (width: 80%) and unitless values (line-height: 1.5) stay legal.
|
||||||
// Only legal absolute length is a single 1px border line.
|
// The only legal absolute length is a 0px reset line.
|
||||||
if (SIZE_PROPS.test(prop)) {
|
// MIXED_PROPS (border/outline shorthands) are checked for their
|
||||||
|
// SIZE half too — a border width must come from var(--size-*).
|
||||||
|
if (SIZE_PROPS.test(prop) || MIXED_PROPS.test(prop)) {
|
||||||
const withoutVars = stripVars(value);
|
const withoutVars = stripVars(value);
|
||||||
const match = withoutVars.match(FORBIDDEN_SIZE_TOKEN);
|
const reported = new Set();
|
||||||
if (match) {
|
for (const match of withoutVars.matchAll(FORBIDDEN_SIZE_TOKEN)) {
|
||||||
const shown = match[0];
|
const shown = match[0];
|
||||||
if (shown !== "1px" && shown !== "0px") {
|
if (shown !== "0px" && !reported.has(shown)) {
|
||||||
|
reported.add(shown);
|
||||||
report(decl, "hardcodedSize", { prop, value: shown });
|
report(decl, "hardcodedSize", { prop, value: shown });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -150,12 +154,13 @@ export default {
|
|||||||
)
|
)
|
||||||
.trim();
|
.trim();
|
||||||
if (withoutKeywords !== "" && withoutKeywords !== "0") {
|
if (withoutKeywords !== "" && withoutKeywords !== "0") {
|
||||||
const match = value.match(COLOR_LITERAL);
|
const reported = new Set();
|
||||||
if (match) {
|
for (const match of value.matchAll(COLOR_LITERAL)) {
|
||||||
report(decl, "hardcodedColor", {
|
const shown = match[0].trim();
|
||||||
prop,
|
if (!reported.has(shown)) {
|
||||||
value: match[0].trim(),
|
reported.add(shown);
|
||||||
});
|
report(decl, "hardcodedColor", { prop, value: shown });
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,7 +31,7 @@
|
|||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
gap: var(--space-xl);
|
gap: var(--space-xl);
|
||||||
padding-bottom: var(--space-m);
|
padding-bottom: var(--space-m);
|
||||||
border-bottom: 1px solid var(--color-border);
|
border-bottom: var(--size-border) solid var(--color-border);
|
||||||
}
|
}
|
||||||
.group-title span {
|
.group-title span {
|
||||||
font: var(--font-size-s) var(--font-mono);
|
font: var(--font-size-s) var(--font-mono);
|
||||||
|
|||||||
@@ -55,7 +55,7 @@
|
|||||||
align-items: center;
|
align-items: center;
|
||||||
gap: var(--space-m);
|
gap: var(--space-m);
|
||||||
padding: var(--space-m) var(--space-l);
|
padding: var(--space-m) var(--space-l);
|
||||||
border: 1px solid var(--color-border);
|
border: var(--size-border) solid var(--color-border);
|
||||||
border-radius: var(--radius-m);
|
border-radius: var(--radius-m);
|
||||||
background: var(--color-panel);
|
background: var(--color-panel);
|
||||||
color: var(--color-text-muted);
|
color: var(--color-text-muted);
|
||||||
@@ -78,7 +78,7 @@
|
|||||||
color: var(--color-text-muted);
|
color: var(--color-text-muted);
|
||||||
}
|
}
|
||||||
.catalog-filters button {
|
.catalog-filters button {
|
||||||
border: 1px solid var(--color-border);
|
border: var(--size-border) solid var(--color-border);
|
||||||
background: transparent;
|
background: transparent;
|
||||||
color: var(--color-text-muted);
|
color: var(--color-text-muted);
|
||||||
font: var(--font-size-s) var(--font-mono);
|
font: var(--font-size-s) var(--font-mono);
|
||||||
|
|||||||
@@ -22,16 +22,16 @@
|
|||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
background-color: var(--color-text);
|
background-color: var(--color-text);
|
||||||
background-image:
|
background-image:
|
||||||
linear-gradient(45deg, #1a2129 25%, transparent 25%),
|
linear-gradient(45deg, var(--color-checker-main) 25%, transparent 25%),
|
||||||
linear-gradient(-45deg, #1a2129 25%, transparent 25%),
|
linear-gradient(-45deg, var(--color-checker-main) 25%, transparent 25%),
|
||||||
linear-gradient(45deg, transparent 75%, #1a2129 75%),
|
linear-gradient(45deg, transparent 75%, var(--color-checker-main) 75%),
|
||||||
linear-gradient(-45deg, transparent 75%, #1a2129 75%);
|
linear-gradient(-45deg, transparent 75%, var(--color-checker-main) 75%);
|
||||||
background-size: var(--space-xl) var(--space-xl);
|
background-size: var(--space-xl) var(--space-xl);
|
||||||
background-position:
|
background-position:
|
||||||
0 0,
|
0 0,
|
||||||
0 10px,
|
0 calc(var(--space-xl) / 2),
|
||||||
10px -10px,
|
calc(var(--space-xl) / 2) calc(-1 * var(--space-xl) / 2),
|
||||||
-10px 0;
|
calc(-1 * var(--space-xl) / 2) 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.checker-canvas--sm {
|
.checker-canvas--sm {
|
||||||
|
|||||||
@@ -24,7 +24,7 @@
|
|||||||
<style>
|
<style>
|
||||||
.code-block {
|
.code-block {
|
||||||
position: relative;
|
position: relative;
|
||||||
border: 1px solid var(--color-border);
|
border: var(--size-border) solid var(--color-border);
|
||||||
border-radius: var(--radius-m);
|
border-radius: var(--radius-m);
|
||||||
background: var(--color-background);
|
background: var(--color-background);
|
||||||
padding: var(--space-m) var(--space-l);
|
padding: var(--space-m) var(--space-l);
|
||||||
|
|||||||
@@ -66,7 +66,7 @@
|
|||||||
gap: var(--space-m);
|
gap: var(--space-m);
|
||||||
min-height: var(--size-panel-min-height);
|
min-height: var(--size-panel-min-height);
|
||||||
padding: var(--space-xxxl);
|
padding: var(--space-xxxl);
|
||||||
border: 1px dashed var(--color-border);
|
border: var(--size-border) dashed var(--color-border);
|
||||||
border-radius: var(--radius-m);
|
border-radius: var(--radius-m);
|
||||||
color: var(--color-text-muted);
|
color: var(--color-text-muted);
|
||||||
background: var(--color-background);
|
background: var(--color-background);
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
gap: var(--space-s);
|
gap: var(--space-s);
|
||||||
margin: 0;
|
margin: 0;
|
||||||
border: 1px solid var(--color-border);
|
border: var(--size-border) solid var(--color-border);
|
||||||
border-radius: var(--radius-m);
|
border-radius: var(--radius-m);
|
||||||
padding: var(--space-m);
|
padding: var(--space-m);
|
||||||
background: var(--color-panel);
|
background: var(--color-panel);
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
|
|
||||||
<style>
|
<style>
|
||||||
.meta-list {
|
.meta-list {
|
||||||
border-top: 1px solid var(--color-border);
|
border-top: var(--size-border) solid var(--color-border);
|
||||||
grid-template-columns: repeat(3, 1fr);
|
grid-template-columns: repeat(3, 1fr);
|
||||||
gap: var(--space-m);
|
gap: var(--space-m);
|
||||||
padding-top: var(--space-l);
|
padding-top: var(--space-l);
|
||||||
|
|||||||
@@ -25,7 +25,7 @@
|
|||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
gap: var(--space-xl);
|
gap: var(--space-xl);
|
||||||
padding: var(--space-l) var(--space-xl);
|
padding: var(--space-l) var(--space-xl);
|
||||||
border-bottom: 1px solid var(--color-border);
|
border-bottom: var(--size-border) solid var(--color-border);
|
||||||
}
|
}
|
||||||
.heading-text {
|
.heading-text {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|||||||
@@ -267,7 +267,10 @@
|
|||||||
}
|
}
|
||||||
.workspace {
|
.workspace {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: minmax(260px, 1fr) minmax(0, 2fr);
|
grid-template-columns: minmax(var(--size-workspace-min), 1fr) minmax(
|
||||||
|
0,
|
||||||
|
2fr
|
||||||
|
);
|
||||||
gap: var(--space-xxl);
|
gap: var(--space-xxl);
|
||||||
align-items: start;
|
align-items: start;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
gap: var(--space-xl);
|
gap: var(--space-xl);
|
||||||
padding: var(--space-m) var(--space-xl);
|
padding: var(--space-m) var(--space-xl);
|
||||||
border-bottom: 1px solid var(--color-border);
|
border-bottom: var(--size-border) solid var(--color-border);
|
||||||
}
|
}
|
||||||
.setting-control {
|
.setting-control {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|||||||
@@ -16,6 +16,6 @@
|
|||||||
justify-content: flex-end;
|
justify-content: flex-end;
|
||||||
gap: var(--space-m);
|
gap: var(--space-m);
|
||||||
padding: var(--space-l) var(--space-xl);
|
padding: var(--space-l) var(--space-xl);
|
||||||
border-top: 1px solid var(--color-border);
|
border-top: var(--size-border) solid var(--color-border);
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -45,9 +45,9 @@
|
|||||||
<style>
|
<style>
|
||||||
.step-card {
|
.step-card {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: 46px 20px 1fr;
|
grid-template-columns: var(--size-step-index) var(--size-step-grip) 1fr;
|
||||||
min-height: var(--size-step-min-height);
|
min-height: var(--size-step-min-height);
|
||||||
border: 1px solid var(--color-border);
|
border: var(--size-border) solid var(--color-border);
|
||||||
background: var(--color-panel);
|
background: var(--color-panel);
|
||||||
}
|
}
|
||||||
.step-index {
|
.step-index {
|
||||||
|
|||||||
@@ -29,12 +29,14 @@
|
|||||||
<style>
|
<style>
|
||||||
.tool-card {
|
.tool-card {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: var(--size-tool-icon) minmax(0, 1fr) 24px 18px;
|
grid-template-columns: var(--size-tool-icon) minmax(0, 1fr) var(
|
||||||
|
--space-xxl
|
||||||
|
) var(--size-tool-arrow);
|
||||||
align-items: center;
|
align-items: center;
|
||||||
gap: var(--space-l);
|
gap: var(--space-l);
|
||||||
min-height: var(--size-tool-min-height);
|
min-height: var(--size-tool-min-height);
|
||||||
padding: var(--space-xl);
|
padding: var(--space-xl);
|
||||||
border: 1px solid var(--color-border);
|
border: var(--size-border) solid var(--color-border);
|
||||||
border-radius: var(--radius-m);
|
border-radius: var(--radius-m);
|
||||||
background: var(--color-panel);
|
background: var(--color-panel);
|
||||||
color: var(--color-text);
|
color: var(--color-text);
|
||||||
@@ -63,7 +65,7 @@
|
|||||||
color: var(--color-text);
|
color: var(--color-text);
|
||||||
}
|
}
|
||||||
.tool-copy span {
|
.tool-copy span {
|
||||||
font: 12px/1.5 var(--font-mono);
|
font: var(--font-size-s)/1.5 var(--font-mono);
|
||||||
color: var(--color-text-muted);
|
color: var(--color-text-muted);
|
||||||
}
|
}
|
||||||
.tool-index {
|
.tool-index {
|
||||||
|
|||||||
@@ -56,12 +56,12 @@
|
|||||||
padding-left: var(--space-m);
|
padding-left: var(--space-m);
|
||||||
padding-right: var(--space-m);
|
padding-right: var(--space-m);
|
||||||
height: var(--space-xxxl);
|
height: var(--space-xxxl);
|
||||||
border: 1px solid var(--color-border);
|
border: var(--size-border) solid var(--color-border);
|
||||||
}
|
}
|
||||||
.swatch {
|
.swatch {
|
||||||
width: var(--space-l);
|
width: var(--space-l);
|
||||||
height: var(--space-l);
|
height: var(--space-l);
|
||||||
border: 1px solid var(--color-border);
|
border: var(--size-border) solid var(--color-border);
|
||||||
flex: none;
|
flex: none;
|
||||||
}
|
}
|
||||||
.color-field input {
|
.color-field input {
|
||||||
|
|||||||
@@ -35,7 +35,7 @@
|
|||||||
font-size: var(--font-size-s);
|
font-size: var(--font-size-s);
|
||||||
color: var(--color-text);
|
color: var(--color-text);
|
||||||
background: var(--color-background);
|
background: var(--color-background);
|
||||||
border: 1px solid var(--color-border);
|
border: var(--size-border) solid var(--color-border);
|
||||||
border-radius: var(--radius-m);
|
border-radius: var(--radius-m);
|
||||||
padding: var(--space-s) var(--space-m);
|
padding: var(--space-s) var(--space-m);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -39,7 +39,7 @@
|
|||||||
font-size: var(--font-size-s);
|
font-size: var(--font-size-s);
|
||||||
color: var(--color-text);
|
color: var(--color-text);
|
||||||
background: var(--color-background);
|
background: var(--color-background);
|
||||||
border: 1px solid var(--color-border);
|
border: var(--size-border) solid var(--color-border);
|
||||||
border-radius: var(--radius-m);
|
border-radius: var(--radius-m);
|
||||||
padding: var(--space-s) var(--space-m);
|
padding: var(--space-s) var(--space-m);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
.lang {
|
.lang {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
border: 1px solid var(--color-border);
|
border: var(--size-border) solid var(--color-border);
|
||||||
}
|
}
|
||||||
.lang-btn {
|
.lang-btn {
|
||||||
border: 0;
|
border: 0;
|
||||||
|
|||||||
@@ -29,7 +29,7 @@
|
|||||||
position: relative;
|
position: relative;
|
||||||
width: var(--space-xxxl);
|
width: var(--space-xxxl);
|
||||||
height: var(--space-xl);
|
height: var(--space-xl);
|
||||||
border: 1px solid var(--color-border);
|
border: var(--size-border) solid var(--color-border);
|
||||||
border-radius: 0;
|
border-radius: 0;
|
||||||
background: var(--color-background);
|
background: var(--color-background);
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
|||||||
@@ -156,7 +156,13 @@
|
|||||||
|
|
||||||
--size-tool-icon: 42px;
|
--size-tool-icon: 42px;
|
||||||
--size-tool-min-height: 106px;
|
--size-tool-min-height: 106px;
|
||||||
|
--size-tool-arrow: 18px;
|
||||||
--size-step-min-height: 138px;
|
--size-step-min-height: 138px;
|
||||||
|
--size-step-index: 46px;
|
||||||
|
--size-step-grip: 20px;
|
||||||
|
--size-card-min: 240px;
|
||||||
|
--size-card-min-narrow: 200px;
|
||||||
|
--size-workspace-min: 260px;
|
||||||
--size-content-max: 880px;
|
--size-content-max: 880px;
|
||||||
--size-content-max-wide: 1680px;
|
--size-content-max-wide: 1680px;
|
||||||
|
|
||||||
@@ -165,6 +171,7 @@
|
|||||||
--font-size-l: 16px;
|
--font-size-l: 16px;
|
||||||
--font-size-xl: 24px;
|
--font-size-xl: 24px;
|
||||||
--font-size-2xl: 32px;
|
--font-size-2xl: 32px;
|
||||||
|
--font-size-xs: 10px;
|
||||||
|
|
||||||
--radius-s: 0px;
|
--radius-s: 0px;
|
||||||
--radius-m: 4px;
|
--radius-m: 4px;
|
||||||
|
|||||||
@@ -59,8 +59,8 @@
|
|||||||
main {
|
main {
|
||||||
background-color: var(--color-background);
|
background-color: var(--color-background);
|
||||||
background-image:
|
background-image:
|
||||||
linear-gradient(var(--color-background-muted) 1px, #0000 1px),
|
linear-gradient(var(--color-background-muted) 1px, transparent 1px),
|
||||||
linear-gradient(90deg, var(--color-background-muted) 1px, #0000 1px);
|
linear-gradient(90deg, var(--color-background-muted) 1px, transparent 1px);
|
||||||
background-size: var(--space-xxxl) var(--space-xxxl);
|
background-size: var(--space-xxxl) var(--space-xxxl);
|
||||||
min-height: 100vh;
|
min-height: 100vh;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -101,7 +101,7 @@
|
|||||||
}
|
}
|
||||||
.ws-results {
|
.ws-results {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
|
grid-template-columns: repeat(auto-fill, minmax(var(--size-card-min), 1fr));
|
||||||
gap: var(--space-l);
|
gap: var(--space-l);
|
||||||
padding: var(--space-m) var(--space-xl);
|
padding: var(--space-m) var(--space-xl);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -216,13 +216,16 @@
|
|||||||
}
|
}
|
||||||
.tool-grid {
|
.tool-grid {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
|
grid-template-columns: repeat(auto-fill, minmax(var(--size-card-min), 1fr));
|
||||||
gap: var(--space-l);
|
gap: var(--space-l);
|
||||||
padding: var(--space-l) var(--space-xl);
|
padding: var(--space-l) var(--space-xl);
|
||||||
}
|
}
|
||||||
.preview-grid {
|
.preview-grid {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
|
grid-template-columns: repeat(
|
||||||
|
auto-fill,
|
||||||
|
minmax(var(--size-card-min-narrow), 1fr)
|
||||||
|
);
|
||||||
gap: var(--space-l);
|
gap: var(--space-l);
|
||||||
padding: var(--space-l) var(--space-xl);
|
padding: var(--space-l) var(--space-xl);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -64,8 +64,8 @@
|
|||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
margin-top: var(--space-page-top);
|
margin-top: var(--space-page-top);
|
||||||
padding-top: var(--space-xxl);
|
padding-top: var(--space-xxl);
|
||||||
border-top: 1px solid var(--color-border);
|
border-top: var(--size-border) solid var(--color-border);
|
||||||
font: 10px var(--font-mono);
|
font: var(--font-size-xs) var(--font-mono);
|
||||||
letter-spacing: var(--space-text-l);
|
letter-spacing: var(--space-text-l);
|
||||||
color: var(--color-text-muted);
|
color: var(--color-text-muted);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user