mirror of
https://github.com/webstudio-is/webstudio.git
synced 2026-10-28 15:46:58 +09:00
## Summary - Make every CSS property in the current MDN dataset available in the Advanced style workflow, regardless of standards status. - Mark experimental, nonstandard, and obsolete properties with a yellow warning icon, status-specific tooltip, and MDN link. - Add complete CSS anchor-positioning property and value support. - Update `mdn-data` from 2.28.0 to 2.33.0 and `css-tree` from 3.1.0 to 3.2.1. ## Root cause Webstudio generated its supported property list from MDN data but filtered by status and then manually allowed a few experimental and nonstandard entries. A property could therefore exist in the installed MDN package without being exposed by the Builder. Runtime validation had a separate grammar gap. CSS-tree 3.2.1 now includes the anchor functions and alignment values, but its bundled data predates the current `position-anchor: normal | match-parent` additions. ## Implementation - Remove status-based property filtering and the nonstandard-property allowlist. - Generate one property-to-status map for 486 standard, 40 experimental, 119 nonstandard, and 15 obsolete properties. - Show status-specific browser-compatibility guidance for every non-standard status. Active declarations keep the warning after the value with 3px left spacing. - Infer MDN links from existing property metadata and fall back to MDN search for entries without a direct URL. - Preserve known vendor prefixes from the generated property inventory instead of maintaining a prefix allowlist. - Generate WebKit text fill/stroke longhands directly from MDN instead of preserving them through parser exceptions. - Preserve unsupported initial-value shapes as unparsed CSS rather than excluding their properties. - Use CSS-tree 3.2.1's native anchor-function and alignment grammars. Keep one narrow extension for the current `position-anchor` keywords missing from its bundled MDN data. - Generate recursively flattened shorthand longhands and initial values from MDN. - Expand syntax-defined shorthands generically from CSS-tree's matched property captures, including function-valued components. - Decline generic expansion when CSS-tree and MDN disagree about the longhand set or a longhand repeats. - Update the font grammar reference and CSS math validation for CSS-tree 3.2.1 compatibility. - Regenerate CSS metadata and property-variable fixtures. ## Checklist - [x] Include MDN properties regardless of status. - [x] Generate status metadata for standard, experimental, nonstandard, and obsolete properties. - [x] Show warning icons in Add styles results and active declarations. - [x] Add status-specific consequences and MDN links. - [x] Preserve generated vendor-prefixed properties during CSS import. - [x] Generate WebKit text fill/stroke longhands without parser exceptions. - [x] Support `anchor()`, `anchor-size()`, and `anchor-center`. - [x] Support current `position-anchor` keywords. - [x] Expand syntax-compatible shorthands through generic MDN metadata and CSS-tree captures. - [x] Cover ordered optional, unordered, slash-separated, function-valued, omitted, CSS-wide, variable, invalid, and incompatible-data cases. - [x] Verify new status, warning, prefix, and shorthand tests fail without their implementations and pass when restored. - [x] Update to CSS-tree 3.2.1. - [x] Regenerate CSS metadata and property-variable fixtures. - [x] Review documentation impact; no authoritative Builder documentation lists individual supported CSS properties, so no update is needed. - [x] Review fixture impact; 668 fixtures and 2,030 valid cases were regenerated with zero unsupported. ## Verification - `pnpm --filter @webstudio-is/css-data test` — 4,618 passed, 1 skipped. - Builder CSS editor and property-status tests — 25 passed. - CSS data, CSS engine, Project Build, and Builder typechecks passed. - Lint, formatting, repeated regeneration, and diff checks passed. ## Known limitation This change covers CSS declarations and values. It does not add a dedicated Builder editor for the `@position-try` at-rule. Closes #6162
52 lines
1.8 KiB
JSON
52 lines
1.8 KiB
JSON
{
|
|
"name": "@webstudio-is/css-data",
|
|
"version": "0.0.0-webstudio-version",
|
|
"description": "CSS Data",
|
|
"author": "Webstudio <github@webstudio.is>",
|
|
"homepage": "https://webstudio.is",
|
|
"type": "module",
|
|
"scripts": {
|
|
"typecheck": "tsc --noEmit",
|
|
"build": "rm -rf lib && esbuild src/index.ts --outdir=lib --bundle --format=esm --packages=external",
|
|
"dts": "tsc --project tsconfig.dts.json && node ./scripts/prepare-dts.mjs",
|
|
"build:html.css": "tsx ./bin/html.css.ts && oxfmt ./src/__generated__/html.ts",
|
|
"build:mdn-data": "tsx ./bin/mdn-data.ts ./src/__generated__ && oxfmt ./src/__generated__/ && (cd ../css-engine && oxfmt src/__generated__/)",
|
|
"build:descriptions": "tsx ./bin/property-value-descriptions.ts && oxfmt ./src/__generated__/property-value-descriptions.ts",
|
|
"build:property-var-fixtures": "tsx ./bin/property-var-test-fixtures.ts && oxfmt ./src/__generated__/property-var-test-fixtures.ts",
|
|
"build:all": "pnpm build:html.css && pnpm build:mdn-data && pnpm build:descriptions && pnpm build:property-var-fixtures",
|
|
"test": "vitest run"
|
|
},
|
|
"devDependencies": {
|
|
"@webstudio-is/tsconfig": "workspace:*",
|
|
"esbuild": "^0.25.3",
|
|
"mdn-data": "2.33.0",
|
|
"openai": "^3.2.1",
|
|
"p-retry": "^6.2.1",
|
|
"typescript": "7.0.2",
|
|
"vitest": "^3.1.2",
|
|
"zod": "^4.4.3"
|
|
},
|
|
"peerDependencies": {
|
|
"zod": "^4.4.3"
|
|
},
|
|
"exports": {
|
|
".": {
|
|
"webstudio": "./src/index.ts",
|
|
"types": "./lib/types/index.d.ts",
|
|
"import": "./lib/index.js"
|
|
}
|
|
},
|
|
"files": [
|
|
"lib/*",
|
|
"!*.{test,stories}.*"
|
|
],
|
|
"license": "AGPL-3.0-or-later",
|
|
"sideEffects": false,
|
|
"dependencies": {
|
|
"@webstudio-is/css-engine": "workspace:*",
|
|
"change-case": "^5.4.4",
|
|
"css-tree": "^3.2.1",
|
|
"warn-once": "^0.1.1"
|
|
}
|
|
}
|