Fix code quality violations and exclude Manifest from checks

Document application modes (development/debug/production)
Add global file drop handler, order column normalization, SPA hash fix
Serve CDN assets via /_vendor/ URLs instead of merging into bundles
Add production minification with license preservation
Improve JSON formatting for debugging and production optimization
Add CDN asset caching with CSS URL inlining for production builds
Add three-mode system (development, debug, production)
Update Manifest CLAUDE.md to reflect helper class architecture
Refactor Manifest.php into helper classes for better organization
Pre-manifest-refactor checkpoint: Add app_mode documentation

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
root
2026-01-14 10:38:22 +00:00
parent bb9046af1b
commit d523f0f600
2355 changed files with 231384 additions and 32223 deletions

View File

@@ -18,7 +18,7 @@ declare const cssDeclarationSorter: PluginCreator<{
export = cssDeclarationSorter;
type SortOrder = 'alphabetical' | 'concentric-css' | 'smacss';
type SortOrder = 'alphabetical' | 'concentric-css' | 'smacss' | 'frakto';
/**
* This function receives two declaration property names and is expected

View File

@@ -0,0 +1,27 @@
import type { PluginCreator } from 'postcss';
export const cssDeclarationSorter: PluginCreator<{
/**
Provide the name of one of the built-in sort orders or a comparison function that is passed to `Array.sort`.
@default 'alphabetical'
*/
order?: SortOrder | SortFunction | undefined;
/**
To prevent breaking legacy CSS where shorthand declarations override longhand declarations. For example `animation-name: some; animation: greeting;` will be kept in this order.
@default false
*/
keepOverrides?: boolean;
}>;
export default cssDeclarationSorter;
type SortOrder = 'alphabetical' | 'concentric-css' | 'smacss' | 'frakto';
/**
* This function receives two declaration property names and is expected
* to return -1, 0 or 1 depending on the wanted order.
*/
type SortFunction = (propertyNameA: string, propertyNameB: string) => -1 | 0 | 1;

View File

@@ -5,6 +5,7 @@ const builtInOrders = [
'alphabetical',
'concentric-css',
'smacss',
'frakto'
];
export const cssDeclarationSorter = ({ order = 'alphabetical', keepOverrides = false } = {}) => ({
@@ -129,7 +130,13 @@ function withOverridesComparator (shorthandData) {
function orderComparator (order) {
return function (a, b) {
return order.indexOf(a) - order.indexOf(b);
const bIndex = order.indexOf(b);
if (bIndex === -1) {
return 0;
}
return order.indexOf(a) - bIndex;
};
}

View File

@@ -0,0 +1,261 @@
import { test } from 'uvu';
import * as assert from 'uvu/assert';
import postcss from 'postcss';
import { cssDeclarationSorter as plugin } from './main.mjs';
const testCssFixtures = (testMessage, tests) => {
test(testMessage, () => (
Promise.all(tests.map(({ message, fixture, expected, options }) => (
postcss(plugin(options))
.process(fixture, { from: undefined })
.then((result) => {
assert.is(result.css, expected, message);
assert.is(result.warnings().length, 0);
})
)))
));
};
const sortOrderTests = [
{
message: 'Keep same order for identical properties.',
fixture: 'a{flex: 0;flex: 2;}',
expected: 'a{flex: 0;flex: 2;}',
},
{
message: 'Sort alphabetically with no order defined.',
fixture: 'a{flex: 0;border: 0;}',
expected: 'a{border: 0;flex: 0;}',
},
{
message: 'Sort alphabetically with a defined order.',
fixture: 'a{flex: 0;border: 0;}',
expected: 'a{border: 0;flex: 0;}',
options: { order: 'alphabetical' },
},
{
message: 'Sort according to custom order, changed.',
fixture: 'a{border: 0;z-index: 0;}',
expected: 'a{z-index: 0;border: 0;}',
options: { order: () => 1 },
},
{
message: 'Sort according to custom order, retained.',
fixture: 'a{border: 0;z-index: 0;}',
expected: 'a{border: 0;z-index: 0;}',
options: { order: () => -1 },
},
{
message: 'Sort according to SMACSS.',
fixture: 'a{border: 0;flex: 0;}',
expected: 'a{flex: 0;border: 0;}',
options: { order: 'smacss' },
},
{
message: 'Sort according to Concentric CSS.',
fixture: 'a{border: 0;flex: 0;}',
expected: 'a{flex: 0;border: 0;}',
options: { order: 'concentric-css' },
},
{
message: 'Sort according to Frakto.',
fixture: 'a{border: 0;flex: 0;}',
expected: 'a{flex: 0;border: 0;}',
options: { order: 'frakto' },
},
{
message: 'Keep at-rule at the same position.',
fixture: 'a{border: 0;@import sii;flex:0;}',
expected: 'a{border: 0;@import sii;flex:0;}',
},
{
message: 'Retain unknown properties, left to right.',
fixture: 'a{unknown-a: 0;unknown-b: 0;}',
expected: 'a{unknown-a: 0;unknown-b: 0;}',
},
{
message: 'Retain unknown properties, right to left.',
fixture: 'a{unknown-b: 0;unknown-a: 0;}',
expected: 'a{unknown-b: 0;unknown-a: 0;}',
},
{
message: 'Retain unknown next to known properties, left to right.',
fixture: 'a{animation: 0;unknown-a: none;}',
expected: 'a{animation: 0;unknown-a: none;}',
},
{
message: 'Retain unknown next to known properties, right to left.',
fixture: 'a{unknown-a: none;animation: 0;}',
expected: 'a{unknown-a: none;animation: 0;}',
},
{
message: 'Sort shorthand, resulting in impactful ordering.',
fixture: 'a{border-width: 0;border-radius: 0;border-bottom: 1px;}',
expected: 'a{border-bottom: 1px;border-radius: 0;border-width: 0;}',
},
];
const commentOrderTests = [
{
message: 'Keep comment intact.',
fixture: 'a{flex: 0;/*flex*/}',
expected: 'a{flex: 0;/*flex*/}',
},
{
message: 'Keep root comments intact.',
fixture: '/*a*/\na{}\n/*b*/\nb{}',
expected: '/*a*/\na{}\n/*b*/\nb{}',
},
{
message: 'Handle declaration with one comment.',
fixture: 'a{/*comment*/}',
expected: 'a{/*comment*/}',
},
{
message: 'Keep dangling comment intact.',
fixture: 'a{flex: 0;\n/*end*/}',
expected: 'a{flex: 0;\n/*end*/}',
},
{
message: 'Keep multiple comments intact.',
fixture: 'a{flex: 0;\n/*flex*/\n/*flex 2*/}',
expected: 'a{flex: 0;\n/*flex*/\n/*flex 2*/}',
},
{
message: 'Keep newline comment above declaration.',
fixture: 'a{flex: 0;\n/*border*/\nborder: 0;}',
expected: 'a{\n/*border*/\nborder: 0;flex: 0;}',
},
{
message: 'Handle multiple newline comments.',
fixture: 'a{flex: 0;\n/*border a*/\n/*border b*/\nborder: 0;}',
expected: 'a{\n/*border a*/\n/*border b*/\nborder: 0;flex: 0;}',
},
{
message: 'Keep inline comment beside declaration.',
fixture: 'a{flex: 0;\nborder: 0; /*border*/}',
expected: 'a{\nborder: 0; /*border*/flex: 0;}',
},
{
message: 'Do not lose reference to paired comment node on one line.',
fixture: 'body{/*a*/border:0;/*b*/}',
expected: 'body{border:0;/*b*//*a*/}',
},
];
const nestedDeclarationTests = [
{
message: 'Sort nested declarations.',
fixture: 'a{a{flex: 0;border: 0;}}',
expected: 'a{a{border: 0;flex: 0;}}',
},
{
message: 'Sort nested at-rule declarations.',
fixture: 'a{@media(){flex: 0;border: 0;}}',
expected: 'a{@media(){border: 0;flex: 0;}}',
},
{
message: 'Keep nested newline comment above declaration.',
fixture: 'a{&:hover{flex: 0;\n/*border*/\nborder: 0;}}',
expected: 'a{&:hover{\n/*border*/\nborder: 0;flex: 0;}}',
},
{
message: 'Keep nested inline comment beside declaration.',
fixture: 'a{&:hover{flex: 0;\nborder: 0; /*border*/}}',
expected: 'a{&:hover{\nborder: 0; /*border*/flex: 0;}}',
},
{
message: 'Put declarations before nested selector.',
fixture: 'a{margin: 0;&:hover{color: red;}padding: 0;}',
expected: 'a{margin: 0;padding: 0;&:hover{color: red;}}',
},
];
const keepOverridesTests = [
{
message: 'Keep shorthand overrides in place.',
fixture: 'a{animation-name: hi;animation: hey 1s ease;}',
expected: 'a{animation-name: hi;animation: hey 1s ease;}',
options: { keepOverrides: true },
},
{
message: 'Keep longhand overrides in place.',
fixture: 'a{flex: 1;flex-grow: -1;}',
expected: 'a{flex: 1;flex-grow: -1;}',
options: { keepOverrides: true, order: () => -1 },
},
{
message: 'Sort overrides with other declarations.',
fixture: 'a{z-index: 1;animation: hey 1s ease;}',
expected: 'a{animation: hey 1s ease;z-index: 1;}',
options: { keepOverrides: true },
},
{
message: 'Keep overrides in place mixed with declaration.',
fixture: 'a{z-index: 1;animation: hey 1s ease;animation-name: hi;}',
expected: 'a{animation: hey 1s ease;animation-name: hi;z-index: 1;}',
options: { keepOverrides: true },
},
{
message: 'Keep vendor prefixed declarations in place.',
fixture: 'a{animation: a;-moz-animation:b;}',
expected: 'a{animation: a;-moz-animation:b;}',
options: { keepOverrides: true },
},
{
message: 'Keep border declarations in place.',
fixture: 'a{border-top: 1px solid;border-color: purple;}',
expected:'a{border-top: 1px solid;border-color: purple;}',
options: { keepOverrides: true },
},
{
message: 'Keep padding declarations in place.',
fixture: 'a{padding-left: unset;padding-inline-start: 0;}',
expected:'a{padding-left: unset;padding-inline-start: 0;}',
options: { keepOverrides: true },
},
{
message: 'Keep border block declarations in place.',
fixture: 'a{border-block-end: 1px solid purple;border-block: none;}',
expected: 'a{border-block-end: 1px solid purple;border-block: none;}',
options: { keepOverrides: true },
},
{
message: 'Keep border block style declarations in place.',
fixture: 'a{border-style: none;border-block-end: 1px solid purple;}',
expected: 'a{border-style: none;border-block-end: 1px solid purple;}',
options: { keepOverrides: true },
},
{
message: 'Keep border width logical property declarations in place.',
fixture: 'a{background: grey;border-width: 0;border-top-width: 1px;border-inline-start-width: 1px;}',
expected: 'a{background: grey;border-width: 0;border-inline-start-width: 1px;border-top-width: 1px;}',
options: { keepOverrides: true },
},
{
message: 'Keep longhand border style declaration in place.',
fixture: 'a{border-width: 0;border-radius: 0;border-bottom: 1px;}',
expected: 'a{border-radius: 0;border-width: 0;border-bottom: 1px;}',
options: { keepOverrides: true },
},
{
message: 'Keep longhand border logical declaration in place.',
fixture: 'a{border-radius: 5px;border-end-start-radius: 0;border-end-end-radius: 0;}',
expected: 'a{border-radius: 5px;border-end-end-radius: 0;border-end-start-radius: 0;}',
options: { keepOverrides: true },
},
];
testCssFixtures('Should order declarations.', sortOrderTests);
testCssFixtures('Should retain comments.', commentOrderTests);
testCssFixtures('Should order nested declarations.', nestedDeclarationTests);
testCssFixtures('Should keep shorthand override order.', keepOverridesTests);
test('Should use the PostCSS plugin API.', () => {
assert.is(plugin().postcssPlugin, 'css-declaration-sorter', 'Able to access name.');
});
test.run();

View File

@@ -1,6 +1,5 @@
export const shorthandData = {
'animation': [
'animation-name',
'animation-duration',
'animation-timing-function',
'animation-delay',
@@ -8,15 +7,21 @@ export const shorthandData = {
'animation-direction',
'animation-fill-mode',
'animation-play-state',
'animation-name',
'animation-timeline',
],
'animation-range': [
'animation-range-start',
'animation-range-end',
],
'background': [
'background-image',
'background-size',
'background-position',
'background-size',
'background-repeat',
'background-attachment',
'background-origin',
'background-clip',
'background-attachment',
'background-color',
],
'columns': [
@@ -28,6 +33,10 @@ export const shorthandData = {
'column-rule-style',
'column-rule-color',
],
'contain-intrinsic-size': [
'contain-intrinsic-width',
'contain-intrinsic-height',
],
'flex': [
'flex-grow',
'flex-shrink',
@@ -46,6 +55,10 @@ export const shorthandData = {
'font-family',
'line-height',
],
'gap': [
'column-gap',
'row-gap',
],
'grid': [
'grid-template-rows',
'grid-template-columns',
@@ -80,6 +93,13 @@ export const shorthandData = {
'list-style-position',
'list-style-image',
],
'offset': [
'offset-anchor',
'offset-distance',
'offset-path',
'offset-position',
'offset-rotate',
],
'padding': [
'padding-block',
'padding-block-start',
@@ -128,6 +148,14 @@ export const shorthandData = {
'padding-bottom',
'padding-left',
],
'position-try': [
'position-try-order',
'position-try-fallbacks',
],
'scroll-timeline': [
'scroll-timeline-name',
'scroll-timeline-axis',
],
'margin': [
'margin-block',
'margin-block-start',
@@ -168,6 +196,16 @@ export const shorthandData = {
'margin-bottom',
'margin-left',
],
'marker': [
'marker-start',
'marker-mid',
'marker-end',
],
'view-timeline': [
'view-timeline-name',
'view-timeline-axis',
'view-timeline-inset',
],
'border': [
'border-top',
'border-right',
@@ -280,6 +318,10 @@ export const shorthandData = {
'border-top-left-radius',
'border-bottom-right-radius',
'border-bottom-left-radius',
'border-end-end-radius',
'border-end-start-radius',
'border-start-end-radius',
'border-start-start-radius',
],
'border-block': [
'border-block-start',
@@ -415,11 +457,19 @@ export const shorthandData = {
'align-self',
'justify-self',
],
'text-box': [
'text-box-trim',
'text-box-edge',
],
'text-decoration': [
'text-decoration-color',
'text-decoration-style',
'text-decoration-line',
],
'text-wrap': [
'text-wrap-mode',
'text-wrap-style',
],
'transition': [
'transition-delay',
'transition-duration',
@@ -430,4 +480,14 @@ export const shorthandData = {
'text-emphasis-style',
'text-emphasis-color',
],
'font-synthesis': [
'font-synthesis-weight',
'font-synthesis-style',
'font-synthesis-small-caps',
'font-synthesis-position',
],
'-webkit-text-stroke': [
'-webkit-text-stroke-color',
'-webkit-text-stroke-width',
],
};

View File

@@ -0,0 +1,471 @@
export const properties = [
'all',
'-webkit-text-fill-color',
'-webkit-text-stroke',
'-webkit-text-stroke-color',
'-webkit-text-stroke-width',
'accent-color',
'align-content',
'align-items',
'align-self',
'alignment-baseline',
'anchor-name',
'animation',
'animation-composition',
'animation-delay',
'animation-direction',
'animation-duration',
'animation-fill-mode',
'animation-iteration-count',
'animation-name',
'animation-play-state',
'animation-range',
'animation-range-end',
'animation-range-start',
'animation-timeline',
'animation-timing-function',
'appearance',
'ascent-override',
'aspect-ratio',
'backdrop-filter',
'backface-visibility',
'background',
'background-attachment',
'background-blend-mode',
'background-clip',
'background-color',
'background-image',
'background-origin',
'background-position',
'background-position-x',
'background-position-y',
'background-repeat',
'background-size',
'block-size',
'border',
'border-block',
'border-block-color',
'border-block-end',
'border-block-end-color',
'border-block-end-style',
'border-block-end-width',
'border-block-start',
'border-block-start-color',
'border-block-start-style',
'border-block-start-width',
'border-block-style',
'border-block-width',
'border-bottom',
'border-bottom-color',
'border-bottom-left-radius',
'border-bottom-right-radius',
'border-bottom-style',
'border-bottom-width',
'border-collapse',
'border-color',
'border-end-end-radius',
'border-end-start-radius',
'border-image',
'border-image-outset',
'border-image-repeat',
'border-image-slice',
'border-image-source',
'border-image-width',
'border-inline',
'border-inline-color',
'border-inline-end',
'border-inline-end-color',
'border-inline-end-style',
'border-inline-end-width',
'border-inline-start',
'border-inline-start-color',
'border-inline-start-style',
'border-inline-start-width',
'border-inline-style',
'border-inline-width',
'border-left',
'border-left-color',
'border-left-style',
'border-left-width',
'border-radius',
'border-right',
'border-right-color',
'border-right-style',
'border-right-width',
'border-spacing',
'border-start-end-radius',
'border-start-start-radius',
'border-style',
'border-top',
'border-top-color',
'border-top-left-radius',
'border-top-right-radius',
'border-top-style',
'border-top-width',
'border-width',
'bottom',
'box-decoration-break',
'box-shadow',
'box-sizing',
'break-after',
'break-before',
'break-inside',
'caption-side',
'caret-color',
'clear',
'clip-path',
'clip-rule',
'color',
'color-interpolation',
'color-interpolation-filters',
'color-scheme',
'column-count',
'column-fill',
'column-gap',
'column-rule',
'column-rule-color',
'column-rule-style',
'column-rule-width',
'column-span',
'column-width',
'columns',
'contain',
'contain-intrinsic-block-size',
'contain-intrinsic-height',
'contain-intrinsic-inline-size',
'contain-intrinsic-size',
'contain-intrinsic-width',
'container',
'container-name',
'container-type',
'content',
'content-visibility',
'counter-increment',
'counter-reset',
'counter-set',
'cursor',
'cx',
'cy',
'd',
'descent-override',
'direction',
'display',
'dominant-baseline',
'empty-cells',
'fill',
'fill-opacity',
'fill-rule',
'filter',
'flex',
'flex-basis',
'flex-direction',
'flex-flow',
'flex-grow',
'flex-shrink',
'flex-wrap',
'float',
'flood-color',
'flood-opacity',
'font',
'font-display',
'font-family',
'font-feature-settings',
'font-kerning',
'font-language-override',
'font-optical-sizing',
'font-palette',
'font-size',
'font-size-adjust',
'font-stretch',
'font-style',
'font-synthesis',
'font-synthesis-position',
'font-synthesis-small-caps',
'font-synthesis-style',
'font-synthesis-weight',
'font-variant',
'font-variant-alternates',
'font-variant-caps',
'font-variant-east-asian',
'font-variant-emoji',
'font-variant-ligatures',
'font-variant-numeric',
'font-variant-position',
'font-variation-settings',
'font-weight',
'forced-color-adjust',
'gap',
'grid',
'grid-area',
'grid-auto-columns',
'grid-auto-flow',
'grid-auto-rows',
'grid-column',
'grid-column-end',
'grid-column-start',
'grid-row',
'grid-row-end',
'grid-row-start',
'grid-template',
'grid-template-areas',
'grid-template-columns',
'grid-template-rows',
'hanging-punctuation',
'height',
'hyphenate-character',
'hyphenate-limit-chars',
'hyphens',
'image-orientation',
'image-rendering',
'initial-letter',
'inline-size',
'inset',
'inset-block',
'inset-block-end',
'inset-block-start',
'inset-inline',
'inset-inline-end',
'inset-inline-start',
'isolation',
'justify-content',
'justify-items',
'justify-self',
'left',
'letter-spacing',
'lighting-color',
'line-break',
'line-clamp',
'line-gap-override',
'line-height',
'list-style',
'list-style-image',
'list-style-position',
'list-style-type',
'margin',
'margin-block',
'margin-block-end',
'margin-block-start',
'margin-bottom',
'margin-inline',
'margin-inline-end',
'margin-inline-start',
'margin-left',
'margin-right',
'margin-top',
'marker',
'marker-end',
'marker-mid',
'marker-start',
'mask',
'mask-border',
'mask-border-outset',
'mask-border-repeat',
'mask-border-slice',
'mask-border-source',
'mask-border-width',
'mask-clip',
'mask-composite',
'mask-image',
'mask-mode',
'mask-origin',
'mask-position',
'mask-repeat',
'mask-size',
'mask-type',
'math-depth',
'math-style',
'max-block-size',
'max-height',
'max-inline-size',
'max-width',
'min-block-size',
'min-height',
'min-inline-size',
'min-width',
'mix-blend-mode',
'object-fit',
'object-position',
'offset',
'offset-anchor',
'offset-distance',
'offset-path',
'offset-position',
'offset-rotate',
'opacity',
'order',
'orphans',
'outline',
'outline-color',
'outline-offset',
'outline-style',
'outline-width',
'overflow',
'overflow-anchor',
'overflow-block',
'overflow-clip-margin',
'overflow-inline',
'overflow-wrap',
'overflow-x',
'overflow-y',
'overscroll-behavior',
'overscroll-behavior-block',
'overscroll-behavior-inline',
'overscroll-behavior-x',
'overscroll-behavior-y',
'padding',
'padding-block',
'padding-block-end',
'padding-block-start',
'padding-bottom',
'padding-inline',
'padding-inline-end',
'padding-inline-start',
'padding-left',
'padding-right',
'padding-top',
'page',
'paint-order',
'perspective',
'perspective-origin',
'place-content',
'place-items',
'place-self',
'pointer-events',
'position',
'position-anchor',
'position-area',
'position-try',
'position-try-fallbacks',
'position-try-order',
'print-color-adjust',
'quotes',
'r',
'resize',
'right',
'rotate',
'row-gap',
'ruby-align',
'ruby-overhang',
'ruby-position',
'rx',
'ry',
'scale',
'scroll-behavior',
'scroll-margin',
'scroll-margin-block',
'scroll-margin-block-end',
'scroll-margin-block-start',
'scroll-margin-bottom',
'scroll-margin-inline',
'scroll-margin-inline-end',
'scroll-margin-inline-start',
'scroll-margin-left',
'scroll-margin-right',
'scroll-margin-top',
'scroll-padding',
'scroll-padding-block',
'scroll-padding-block-end',
'scroll-padding-block-start',
'scroll-padding-bottom',
'scroll-padding-inline',
'scroll-padding-inline-end',
'scroll-padding-inline-start',
'scroll-padding-left',
'scroll-padding-right',
'scroll-padding-top',
'scroll-snap-align',
'scroll-snap-stop',
'scroll-snap-type',
'scroll-timeline',
'scroll-timeline-axis',
'scroll-timeline-name',
'scrollbar-color',
'scrollbar-gutter',
'scrollbar-width',
'shape-image-threshold',
'shape-margin',
'shape-outside',
'shape-rendering',
'size-adjust',
'src',
'stop-color',
'stop-opacity',
'stroke',
'stroke-dasharray',
'stroke-dashoffset',
'stroke-linecap',
'stroke-linejoin',
'stroke-miterlimit',
'stroke-opacity',
'stroke-width',
'tab-size',
'table-layout',
'text-align',
'text-align-last',
'text-anchor',
'text-autospace',
'text-box',
'text-box-edge',
'text-box-trim',
'text-combine-upright',
'text-decoration',
'text-decoration-color',
'text-decoration-line',
'text-decoration-skip-ink',
'text-decoration-style',
'text-decoration-thickness',
'text-emphasis',
'text-emphasis-color',
'text-emphasis-position',
'text-emphasis-style',
'text-indent',
'text-justify',
'text-orientation',
'text-overflow',
'text-rendering',
'text-shadow',
'text-transform',
'text-underline-offset',
'text-underline-position',
'text-wrap',
'text-wrap-mode',
'text-wrap-style',
'timeline-scope',
'top',
'touch-action',
'transform',
'transform-box',
'transform-origin',
'transform-style',
'transition',
'transition-behavior',
'transition-delay',
'transition-duration',
'transition-property',
'transition-timing-function',
'translate',
'unicode-bidi',
'unicode-range',
'user-select',
'vector-effect',
'vertical-align',
'view-timeline',
'view-timeline-axis',
'view-timeline-inset',
'view-timeline-name',
'view-transition-class',
'view-transition-name',
'visibility',
'white-space',
'white-space-collapse',
'widows',
'width',
'will-change',
'word-break',
'word-spacing',
'writing-mode',
'x',
'y',
'z-index',
'zoom'
];

View File

@@ -0,0 +1,475 @@
export const properties = [
'all',
'display',
'position',
'position-anchor',
'position-area',
'position-try',
'position-try-order',
'position-try-fallbacks',
'anchor-name',
'top',
'right',
'bottom',
'left',
'offset',
'offset-anchor',
'offset-distance',
'offset-path',
'offset-position',
'offset-rotate',
'grid',
'grid-template-rows',
'grid-template-columns',
'grid-template-areas',
'grid-auto-rows',
'grid-auto-columns',
'grid-auto-flow',
'column-gap',
'row-gap',
'grid-area',
'grid-row',
'grid-row-start',
'grid-row-end',
'grid-column',
'grid-column-start',
'grid-column-end',
'grid-template',
'flex',
'flex-grow',
'flex-shrink',
'flex-basis',
'flex-direction',
'flex-flow',
'flex-wrap',
'box-decoration-break',
'place-content',
'align-content',
'justify-content',
'place-items',
'align-items',
'justify-items',
'place-self',
'align-self',
'justify-self',
'vertical-align',
'order',
'float',
'clear',
'shape-margin',
'shape-outside',
'shape-rendering',
'shape-image-threshold',
'orphans',
'gap',
'columns',
'column-fill',
'column-rule',
'column-rule-width',
'column-rule-style',
'column-rule-color',
'column-width',
'column-span',
'column-count',
'break-before',
'break-after',
'break-inside',
'page',
'transform',
'transform-box',
'transform-origin',
'transform-style',
'vector-effect',
'translate',
'rotate',
'scale',
'zoom',
'perspective',
'perspective-origin',
'appearance',
'visibility',
'content-visibility',
'opacity',
'z-index',
'paint-order',
'mix-blend-mode',
'backface-visibility',
'backdrop-filter',
'clip-path',
'clip-rule',
'mask',
'mask-border',
'mask-border-outset',
'mask-border-repeat',
'mask-border-slice',
'mask-border-source',
'mask-border-width',
'mask-image',
'mask-mode',
'mask-position',
'mask-size',
'mask-repeat',
'mask-origin',
'mask-clip',
'mask-composite',
'mask-type',
'filter',
'timeline-scope',
'scroll-timeline',
'scroll-timeline-name',
'scroll-timeline-axis',
'view-timeline',
'view-timeline-name',
'view-timeline-axis',
'view-timeline-inset',
'animation',
'animation-duration',
'animation-timing-function',
'animation-delay',
'animation-iteration-count',
'animation-direction',
'animation-fill-mode',
'animation-play-state',
'animation-name',
'animation-timeline',
'animation-composition',
'animation-range',
'animation-range-start',
'animation-range-end',
'view-transition-name',
'view-transition-class',
'transition',
'transition-behavior',
'transition-delay',
'transition-duration',
'transition-property',
'transition-timing-function',
'will-change',
'counter-increment',
'counter-reset',
'counter-set',
'cursor',
'fill',
'fill-opacity',
'fill-rule',
'flood-color',
'flood-opacity',
'lighting-color',
'marker',
'marker-end',
'marker-mid',
'marker-start',
'x',
'y',
'r',
'rx',
'ry',
'stop-color',
'stop-opacity',
'stroke',
'stroke-dasharray',
'stroke-dashoffset',
'stroke-linecap',
'stroke-linejoin',
'stroke-miterlimit',
'stroke-opacity',
'stroke-width',
'box-sizing',
'contain',
'contain-intrinsic-size',
'contain-intrinsic-width',
'contain-intrinsic-height',
'contain-intrinsic-inline-size',
'contain-intrinsic-block-size',
'container',
'container-name',
'container-type',
'cx',
'cy',
'd',
'margin',
'margin-top',
'margin-right',
'margin-bottom',
'margin-left',
'margin-inline',
'margin-inline-start',
'margin-inline-end',
'margin-block',
'margin-block-start',
'margin-block-end',
'inset',
'inset-block',
'inset-block-end',
'inset-block-start',
'inset-inline',
'inset-inline-end',
'inset-inline-start',
'outline',
'outline-color',
'outline-style',
'outline-width',
'outline-offset',
'box-shadow',
'border',
'border-top',
'border-right',
'border-bottom',
'border-left',
'border-width',
'border-top-width',
'border-right-width',
'border-bottom-width',
'border-left-width',
'border-style',
'border-top-style',
'border-right-style',
'border-bottom-style',
'border-left-style',
'border-color',
'border-top-color',
'border-right-color',
'border-bottom-color',
'border-left-color',
'border-radius',
'border-top-right-radius',
'border-top-left-radius',
'border-bottom-right-radius',
'border-bottom-left-radius',
'border-inline',
'border-inline-width',
'border-inline-style',
'border-inline-color',
'border-inline-start',
'border-inline-start-width',
'border-inline-start-style',
'border-inline-start-color',
'border-inline-end',
'border-inline-end-width',
'border-inline-end-style',
'border-inline-end-color',
'border-block',
'border-block-width',
'border-block-style',
'border-block-color',
'border-block-start',
'border-block-start-width',
'border-block-start-style',
'border-block-start-color',
'border-block-end',
'border-block-end-width',
'border-block-end-style',
'border-block-end-color',
'border-image',
'border-image-source',
'border-image-slice',
'border-image-width',
'border-image-outset',
'border-image-repeat',
'border-collapse',
'border-spacing',
'border-start-start-radius',
'border-start-end-radius',
'border-end-start-radius',
'border-end-end-radius',
'background',
'background-image',
'background-position',
'background-position-x',
'background-position-y',
'background-size',
'background-repeat',
'background-attachment',
'background-origin',
'background-clip',
'background-color',
'background-blend-mode',
'isolation',
'padding',
'padding-top',
'padding-right',
'padding-bottom',
'padding-left',
'padding-inline',
'padding-inline-start',
'padding-inline-end',
'padding-block',
'padding-block-start',
'padding-block-end',
'image-orientation',
'image-rendering',
'aspect-ratio',
'width',
'min-width',
'max-width',
'height',
'min-height',
'max-height',
'line-clamp',
'-webkit-text-fill-color',
'-webkit-text-stroke',
'-webkit-text-stroke-width',
'-webkit-text-stroke-color',
'inline-size',
'min-inline-size',
'max-inline-size',
'block-size',
'min-block-size',
'max-block-size',
'table-layout',
'caption-side',
'empty-cells',
'overflow',
'overflow-anchor',
'overflow-block',
'overflow-clip-margin',
'overflow-inline',
'overflow-x',
'overflow-y',
'overscroll-behavior',
'overscroll-behavior-block',
'overscroll-behavior-inline',
'overscroll-behavior-x',
'overscroll-behavior-y',
'resize',
'object-fit',
'object-position',
'scroll-behavior',
'scroll-margin',
'scroll-margin-block',
'scroll-margin-block-end',
'scroll-margin-block-start',
'scroll-margin-bottom',
'scroll-margin-inline',
'scroll-margin-inline-end',
'scroll-margin-inline-start',
'scroll-margin-left',
'scroll-margin-right',
'scroll-margin-top',
'scroll-padding',
'scroll-padding-block',
'scroll-padding-block-end',
'scroll-padding-block-start',
'scroll-padding-bottom',
'scroll-padding-inline',
'scroll-padding-inline-end',
'scroll-padding-inline-start',
'scroll-padding-left',
'scroll-padding-right',
'scroll-padding-top',
'scroll-snap-align',
'scroll-snap-stop',
'scroll-snap-type',
'scrollbar-color',
'scrollbar-gutter',
'scrollbar-width',
'touch-action',
'pointer-events',
'content',
'quotes',
'hanging-punctuation',
'color',
'color-interpolation',
'color-interpolation-filters',
'accent-color',
'print-color-adjust',
'forced-color-adjust',
'color-scheme',
'caret-color',
'font',
'font-style',
'font-variant',
'font-weight',
'font-stretch',
'font-size',
'size-adjust',
'line-height',
'src',
'font-family',
'font-display',
'font-kerning',
'font-language-override',
'font-optical-sizing',
'font-palette',
'font-size-adjust',
'font-synthesis',
'font-synthesis-weight',
'font-synthesis-style',
'font-synthesis-small-caps',
'font-synthesis-position',
'font-variant-alternates',
'font-variant-caps',
'font-variant-east-asian',
'font-variant-emoji',
'font-variant-ligatures',
'font-variant-numeric',
'font-variant-position',
'font-variation-settings',
'font-feature-settings',
'alignment-baseline',
'dominant-baseline',
'text-anchor',
'text-autospace',
'text-box',
'text-box-trim',
'text-box-edge',
'ascent-override',
'descent-override',
'line-gap-override',
'hyphens',
'hyphenate-character',
'hyphenate-limit-chars',
'initial-letter',
'letter-spacing',
'line-break',
'list-style',
'list-style-type',
'list-style-image',
'list-style-position',
'writing-mode',
'direction',
'unicode-bidi',
'unicode-range',
'user-select',
'ruby-align',
'ruby-overhang',
'ruby-position',
'math-depth',
'math-style',
'text-combine-upright',
'text-align',
'text-align-last',
'text-decoration',
'text-decoration-line',
'text-decoration-style',
'text-decoration-color',
'text-decoration-thickness',
'text-decoration-skip-ink',
'text-emphasis',
'text-emphasis-style',
'text-emphasis-color',
'text-emphasis-position',
'text-indent',
'text-justify',
'text-underline-position',
'text-underline-offset',
'text-orientation',
'text-overflow',
'text-rendering',
'text-shadow',
'text-transform',
'text-wrap',
'text-wrap-mode',
'text-wrap-style',
'white-space',
'white-space-collapse',
'word-break',
'word-spacing',
'overflow-wrap',
'tab-size',
'widows',
];

View File

@@ -0,0 +1,478 @@
export const properties = [
'position',
'position-anchor',
'position-area',
'position-try',
'position-try-order',
'position-try-fallbacks',
'anchor-name',
'top',
'right',
'bottom',
'left',
'inset',
'inset-block',
'inset-block-start',
'inset-block-end',
'inset-inline',
'inset-inline-start',
'inset-inline-end',
'z-index',
'float',
'clear',
'display',
'box-sizing',
'box-decoration-break',
'aspect-ratio',
'contain',
'contain-intrinsic-size',
'contain-intrinsic-width',
'contain-intrinsic-height',
'contain-intrinsic-block-size',
'contain-intrinsic-inline-size',
'container',
'container-name',
'container-type',
'width',
'min-width',
'max-width',
'height',
'min-height',
'max-height',
'block-size',
'min-block-size',
'max-block-size',
'inline-size',
'min-inline-size',
'max-inline-size',
'margin',
'margin-top',
'margin-right',
'margin-bottom',
'margin-left',
'margin-block',
'margin-block-start',
'margin-block-end',
'margin-inline',
'margin-inline-start',
'margin-inline-end',
'padding',
'padding-top',
'padding-right',
'padding-bottom',
'padding-left',
'padding-block',
'padding-block-start',
'padding-block-end',
'padding-inline',
'padding-inline-start',
'padding-inline-end',
'flex',
'flex-grow',
'flex-shrink',
'flex-basis',
'flex-flow',
'flex-direction',
'flex-wrap',
'grid',
'grid-area',
'grid-auto-columns',
'grid-auto-flow',
'grid-auto-rows',
'grid-column',
'grid-column-end',
'grid-column-start',
'grid-row',
'grid-row-end',
'grid-row-start',
'grid-template',
'grid-template-areas',
'grid-template-columns',
'grid-template-rows',
'align-content',
'align-items',
'align-self',
'justify-content',
'justify-items',
'justify-self',
'place-content',
'place-items',
'place-self',
'gap',
'row-gap',
'column-gap',
'order',
'orphans',
'widows',
'columns',
'column-width',
'column-count',
'column-span',
'column-rule',
'column-rule-width',
'column-rule-style',
'column-rule-color',
'column-fill',
'table-layout',
'caption-side',
'color',
'caret-color',
'font',
'font-style',
'font-variant',
'font-weight',
'font-stretch',
'font-size',
'font-family',
'font-size-adjust',
'font-display',
'font-optical-sizing',
'font-variation-settings',
'font-feature-settings',
'font-kerning',
'font-language-override',
'font-palette',
'font-synthesis',
'font-synthesis-weight',
'font-synthesis-style',
'font-synthesis-small-caps',
'font-synthesis-position',
'font-variant-alternates',
'font-variant-caps',
'font-variant-ligatures',
'font-variant-numeric',
'font-variant-position',
'font-variant-east-asian',
'font-variant-emoji',
'size-adjust',
'text-align',
'text-align-last',
'text-indent',
'text-justify',
'text-wrap',
'text-wrap-mode',
'text-wrap-style',
'text-overflow',
'text-transform',
'text-orientation',
'text-combine-upright',
'text-decoration',
'text-decoration-line',
'text-decoration-color',
'text-decoration-style',
'text-decoration-thickness',
'text-decoration-skip-ink',
'text-underline-offset',
'text-underline-position',
'text-emphasis',
'text-emphasis-style',
'text-emphasis-color',
'text-emphasis-position',
'text-shadow',
'text-rendering',
'text-anchor',
'text-autospace',
'text-box',
'text-box-trim',
'text-box-edge',
'-webkit-text-fill-color',
'-webkit-text-stroke',
'-webkit-text-stroke-width',
'-webkit-text-stroke-color',
'line-height',
'line-break',
'line-clamp',
'line-gap-override',
'white-space',
'white-space-collapse',
'word-break',
'word-spacing',
'letter-spacing',
'vertical-align',
'list-style',
'list-style-type',
'list-style-position',
'list-style-image',
'hyphens',
'hyphenate-character',
'hyphenate-limit-chars',
'hanging-punctuation',
'direction',
'unicode-bidi',
'unicode-range',
'writing-mode',
'dominant-baseline',
'alignment-baseline',
'ascent-override',
'descent-override',
'initial-letter',
'ruby-position',
'ruby-overhang',
'ruby-align',
'quotes',
'background',
'background-image',
'background-position',
'background-position-x',
'background-position-y',
'background-size',
'background-repeat',
'background-attachment',
'background-origin',
'background-clip',
'background-color',
'background-blend-mode',
'border',
'border-width',
'border-style',
'border-color',
'border-top',
'border-top-width',
'border-top-style',
'border-top-color',
'border-right',
'border-right-width',
'border-right-style',
'border-right-color',
'border-bottom',
'border-bottom-width',
'border-bottom-style',
'border-bottom-color',
'border-left',
'border-left-width',
'border-left-style',
'border-left-color',
'border-block',
'border-block-width',
'border-block-style',
'border-block-color',
'border-block-start',
'border-block-start-width',
'border-block-start-style',
'border-block-start-color',
'border-block-end',
'border-block-end-width',
'border-block-end-style',
'border-block-end-color',
'border-inline',
'border-inline-width',
'border-inline-style',
'border-inline-color',
'border-inline-start',
'border-inline-start-width',
'border-inline-start-style',
'border-inline-start-color',
'border-inline-end',
'border-inline-end-width',
'border-inline-end-style',
'border-inline-end-color',
'border-radius',
'border-top-left-radius',
'border-top-right-radius',
'border-bottom-right-radius',
'border-bottom-left-radius',
'border-start-start-radius',
'border-start-end-radius',
'border-end-end-radius',
'border-end-start-radius',
'border-image',
'border-image-source',
'border-image-slice',
'border-image-width',
'border-image-outset',
'border-image-repeat',
'border-collapse',
'border-spacing',
'outline',
'outline-width',
'outline-style',
'outline-color',
'outline-offset',
'box-shadow',
'opacity',
'visibility',
'object-fit',
'object-position',
'filter',
'backdrop-filter',
'backface-visibility',
'mask',
'mask-border',
'mask-border-outset',
'mask-border-repeat',
'mask-border-slice',
'mask-border-source',
'mask-border-width',
'mask-clip',
'mask-composite',
'mask-image',
'mask-mode',
'mask-origin',
'mask-position',
'mask-repeat',
'mask-size',
'mask-type',
'shape-outside',
'shape-margin',
'shape-rendering',
'shape-image-threshold',
'd',
'x',
'y',
'cx',
'cy',
'r',
'rx',
'ry',
'clip-path',
'clip-rule',
'fill',
'fill-opacity',
'fill-rule',
'flood-color',
'flood-opacity',
'lighting-color',
'marker',
'marker-start',
'marker-mid',
'marker-end',
'stroke',
'stroke-width',
'stroke-opacity',
'stroke-dasharray',
'stroke-dashoffset',
'stroke-linecap',
'stroke-linejoin',
'stroke-miterlimit',
'stop-color',
'stop-opacity',
'accent-color',
'mix-blend-mode',
'paint-order',
'isolation',
'appearance',
'color-scheme',
'color-interpolation',
'color-interpolation-filters',
'transform',
'transform-box',
'transform-origin',
'transform-style',
'translate',
'scale',
'rotate',
'zoom',
'vector-effect',
'transition',
'transition-property',
'transition-duration',
'transition-timing-function',
'transition-delay',
'transition-behavior',
'view-transition-name',
'view-transition-class',
'timeline-scope',
'scroll-timeline',
'scroll-timeline-name',
'scroll-timeline-axis',
'view-timeline',
'view-timeline-name',
'view-timeline-axis',
'view-timeline-inset',
'animation',
'animation-duration',
'animation-timing-function',
'animation-delay',
'animation-iteration-count',
'animation-direction',
'animation-fill-mode',
'animation-play-state',
'animation-name',
'animation-timeline',
'animation-composition',
'animation-range',
'animation-range-start',
'animation-range-end',
'offset',
'offset-path',
'offset-position',
'offset-distance',
'offset-rotate',
'offset-anchor',
'image-orientation',
'image-rendering',
'perspective',
'perspective-origin',
'will-change',
'cursor',
'pointer-events',
'touch-action',
'user-select',
'resize',
'overflow',
'overflow-x',
'overflow-y',
'overflow-block',
'overflow-inline',
'overflow-wrap',
'overflow-anchor',
'overflow-clip-margin',
'overscroll-behavior',
'overscroll-behavior-x',
'overscroll-behavior-y',
'overscroll-behavior-block',
'overscroll-behavior-inline',
'scroll-behavior',
'scroll-margin',
'scroll-margin-top',
'scroll-margin-right',
'scroll-margin-bottom',
'scroll-margin-left',
'scroll-margin-block',
'scroll-margin-block-start',
'scroll-margin-block-end',
'scroll-margin-inline',
'scroll-margin-inline-start',
'scroll-margin-inline-end',
'scroll-padding',
'scroll-padding-top',
'scroll-padding-right',
'scroll-padding-bottom',
'scroll-padding-left',
'scroll-padding-block',
'scroll-padding-block-start',
'scroll-padding-block-end',
'scroll-padding-inline',
'scroll-padding-inline-start',
'scroll-padding-inline-end',
'scroll-snap-type',
'scroll-snap-align',
'scroll-snap-stop',
'scrollbar-width',
'scrollbar-color',
'scrollbar-gutter',
'all',
'content',
'content-visibility',
'page',
'break-after',
'break-before',
'break-inside',
'counter-reset',
'counter-increment',
'counter-set',
'empty-cells',
'forced-color-adjust',
'print-color-adjust',
'math-depth',
'math-style',
'src',
'tab-size',
];

View File

@@ -0,0 +1,476 @@
export const properties = [
'all',
'box-sizing',
'contain',
'contain-intrinsic-size',
'contain-intrinsic-width',
'contain-intrinsic-height',
'contain-intrinsic-inline-size',
'contain-intrinsic-block-size',
'container',
'container-name',
'container-type',
'cx',
'cy',
'd',
'display',
'appearance',
'visibility',
'content-visibility',
'z-index',
'paint-order',
'position',
'position-anchor',
'position-area',
'position-try',
'position-try-order',
'position-try-fallbacks',
'anchor-name',
'top',
'right',
'bottom',
'left',
'offset',
'offset-anchor',
'offset-distance',
'offset-path',
'offset-position',
'offset-rotate',
'grid',
'grid-template-rows',
'grid-template-columns',
'grid-template-areas',
'grid-auto-rows',
'grid-auto-columns',
'grid-auto-flow',
'column-gap',
'row-gap',
'grid-area',
'grid-row',
'grid-row-start',
'grid-row-end',
'grid-column',
'grid-column-start',
'grid-column-end',
'grid-template',
'flex',
'flex-grow',
'flex-shrink',
'flex-basis',
'flex-direction',
'flex-flow',
'flex-wrap',
'box-decoration-break',
'place-content',
'place-items',
'place-self',
'align-content',
'align-items',
'align-self',
'justify-content',
'justify-items',
'justify-self',
'order',
'aspect-ratio',
'width',
'min-width',
'max-width',
'height',
'min-height',
'max-height',
'line-clamp',
'-webkit-text-fill-color',
'-webkit-text-stroke',
'-webkit-text-stroke-width',
'-webkit-text-stroke-color',
'inline-size',
'min-inline-size',
'max-inline-size',
'block-size',
'min-block-size',
'max-block-size',
'margin',
'margin-top',
'margin-right',
'margin-bottom',
'margin-left',
'margin-inline',
'margin-inline-start',
'margin-inline-end',
'margin-block',
'margin-block-start',
'margin-block-end',
'inset',
'inset-block',
'inset-block-end',
'inset-block-start',
'inset-inline',
'inset-inline-end',
'inset-inline-start',
'padding',
'padding-top',
'padding-right',
'padding-bottom',
'padding-left',
'padding-inline',
'padding-inline-start',
'padding-inline-end',
'padding-block',
'padding-block-start',
'padding-block-end',
'float',
'clear',
'overflow',
'overflow-anchor',
'overflow-block',
'overflow-clip-margin',
'overflow-inline',
'overflow-x',
'overflow-y',
'overscroll-behavior',
'overscroll-behavior-block',
'overscroll-behavior-inline',
'overscroll-behavior-x',
'overscroll-behavior-y',
'orphans',
'gap',
'columns',
'column-fill',
'column-rule',
'column-rule-color',
'column-rule-style',
'column-rule-width',
'column-span',
'column-count',
'column-width',
'object-fit',
'object-position',
'transform',
'transform-box',
'transform-origin',
'transform-style',
'vector-effect',
'translate',
'rotate',
'scale',
'zoom',
'border',
'border-top',
'border-right',
'border-bottom',
'border-left',
'border-width',
'border-top-width',
'border-right-width',
'border-bottom-width',
'border-left-width',
'border-style',
'border-top-style',
'border-right-style',
'border-bottom-style',
'border-left-style',
'border-radius',
'border-top-right-radius',
'border-top-left-radius',
'border-bottom-right-radius',
'border-bottom-left-radius',
'border-inline',
'border-inline-color',
'border-inline-style',
'border-inline-width',
'border-inline-start',
'border-inline-start-color',
'border-inline-start-style',
'border-inline-start-width',
'border-inline-end',
'border-inline-end-color',
'border-inline-end-style',
'border-inline-end-width',
'border-block',
'border-block-color',
'border-block-style',
'border-block-width',
'border-block-start',
'border-block-start-color',
'border-block-start-style',
'border-block-start-width',
'border-block-end',
'border-block-end-color',
'border-block-end-style',
'border-block-end-width',
'border-color',
'border-image',
'border-image-outset',
'border-image-repeat',
'border-image-slice',
'border-image-source',
'border-image-width',
'border-top-color',
'border-right-color',
'border-bottom-color',
'border-left-color',
'border-collapse',
'border-spacing',
'border-start-start-radius',
'border-start-end-radius',
'border-end-start-radius',
'border-end-end-radius',
'outline',
'outline-color',
'outline-style',
'outline-width',
'outline-offset',
'backdrop-filter',
'backface-visibility',
'background',
'background-image',
'background-position',
'background-position-x',
'background-position-y',
'background-size',
'background-repeat',
'background-attachment',
'background-origin',
'background-clip',
'background-color',
'background-blend-mode',
'box-shadow',
'isolation',
'fill',
'fill-opacity',
'fill-rule',
'flood-color',
'flood-opacity',
'lighting-color',
'marker',
'marker-end',
'marker-mid',
'marker-start',
'x',
'y',
'r',
'rx',
'ry',
'stop-color',
'stop-opacity',
'stroke',
'stroke-dasharray',
'stroke-dashoffset',
'stroke-linecap',
'stroke-linejoin',
'stroke-miterlimit',
'stroke-opacity',
'stroke-width',
'content',
'quotes',
'hanging-punctuation',
'color',
'color-interpolation',
'color-interpolation-filters',
'accent-color',
'print-color-adjust',
'forced-color-adjust',
'color-scheme',
'caret-color',
'font',
'font-style',
'font-variant',
'font-weight',
'src',
'font-stretch',
'font-size',
'size-adjust',
'line-height',
'font-family',
'font-display',
'font-kerning',
'font-language-override',
'font-optical-sizing',
'font-palette',
'font-size-adjust',
'font-synthesis',
'font-synthesis-weight',
'font-synthesis-style',
'font-synthesis-small-caps',
'font-synthesis-position',
'font-variant-alternates',
'font-variant-caps',
'font-variant-east-asian',
'font-variant-emoji',
'font-variant-ligatures',
'font-variant-numeric',
'font-variant-position',
'font-variation-settings',
'font-feature-settings',
'alignment-baseline',
'dominant-baseline',
'text-anchor',
'text-autospace',
'text-box',
'text-box-trim',
'text-box-edge',
'ascent-override',
'descent-override',
'line-gap-override',
'hyphens',
'hyphenate-character',
'hyphenate-limit-chars',
'initial-letter',
'letter-spacing',
'line-break',
'list-style',
'list-style-image',
'list-style-position',
'list-style-type',
'direction',
'text-align',
'text-align-last',
'text-decoration',
'text-decoration-line',
'text-decoration-style',
'text-decoration-color',
'text-decoration-thickness',
'text-decoration-skip-ink',
'text-emphasis',
'text-emphasis-style',
'text-emphasis-color',
'text-emphasis-position',
'text-indent',
'text-justify',
'text-underline-position',
'text-underline-offset',
'text-orientation',
'text-overflow',
'text-rendering',
'text-shadow',
'text-transform',
'text-wrap',
'text-wrap-mode',
'text-wrap-style',
'vertical-align',
'white-space',
'white-space-collapse',
'word-break',
'word-spacing',
'overflow-wrap',
'timeline-scope',
'scroll-timeline',
'scroll-timeline-name',
'scroll-timeline-axis',
'view-timeline',
'view-timeline-name',
'view-timeline-axis',
'view-timeline-inset',
'animation',
'animation-duration',
'animation-timing-function',
'animation-delay',
'animation-iteration-count',
'animation-direction',
'animation-fill-mode',
'animation-play-state',
'animation-name',
'animation-timeline',
'animation-composition',
'animation-range',
'animation-range-start',
'animation-range-end',
'view-transition-name',
'view-transition-class',
'mix-blend-mode',
'break-before',
'break-after',
'break-inside',
'page',
'caption-side',
'clip-path',
'clip-rule',
'counter-increment',
'counter-reset',
'counter-set',
'cursor',
'empty-cells',
'filter',
'image-orientation',
'image-rendering',
'mask',
'mask-border',
'mask-border-outset',
'mask-border-repeat',
'mask-border-slice',
'mask-border-source',
'mask-border-width',
'mask-clip',
'mask-composite',
'mask-image',
'mask-mode',
'mask-origin',
'mask-position',
'mask-repeat',
'mask-size',
'mask-type',
'opacity',
'perspective',
'perspective-origin',
'pointer-events',
'resize',
'scroll-behavior',
'scroll-margin',
'scroll-margin-block',
'scroll-margin-block-end',
'scroll-margin-block-start',
'scroll-margin-bottom',
'scroll-margin-inline',
'scroll-margin-inline-end',
'scroll-margin-inline-start',
'scroll-margin-left',
'scroll-margin-right',
'scroll-margin-top',
'scroll-padding',
'scroll-padding-block',
'scroll-padding-block-end',
'scroll-padding-block-start',
'scroll-padding-bottom',
'scroll-padding-inline',
'scroll-padding-inline-end',
'scroll-padding-inline-start',
'scroll-padding-left',
'scroll-padding-right',
'scroll-padding-top',
'scroll-snap-align',
'scroll-snap-stop',
'scroll-snap-type',
'scrollbar-color',
'scrollbar-gutter',
'scrollbar-width',
'shape-image-threshold',
'shape-margin',
'shape-outside',
'shape-rendering',
'tab-size',
'table-layout',
'ruby-align',
'ruby-overhang',
'ruby-position',
'math-depth',
'math-style',
'text-combine-upright',
'touch-action',
'transition',
'transition-behavior',
'transition-delay',
'transition-duration',
'transition-property',
'transition-timing-function',
'will-change',
'unicode-bidi',
'unicode-range',
'user-select',
'widows',
'writing-mode',
];