├── .editorconfig
├── .github
├── CODEOWNERS
├── ISSUE_TEMPLATE
│ ├── bug.yml
│ └── config.yml
├── PULL_REQUEST_TEMPLATE
├── dependabot.yml
└── workflows
│ ├── idle.yml
│ ├── lint.yml
│ └── publish-release.yml
├── .gitignore
├── .npmignore
├── .nvmrc
├── .prettierrc.json
├── .release-please-manifest.json
├── CHANGELOG.md
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── REVIEWING.md
├── api
├── index.js
├── inheritance.json
├── inheritance.md
└── inheritance.schema.json
├── css
├── README.md
├── at-rules.json
├── at-rules.md
├── at-rules.schema.json
├── definitions.json
├── functions.json
├── functions.md
├── functions.schema.json
├── index.js
├── properties.json
├── properties.md
├── properties.schema.json
├── selectors.json
├── selectors.md
├── selectors.schema.json
├── syntaxes.json
├── syntaxes.md
├── syntaxes.schema.json
├── types.json
├── types.md
├── types.schema.json
├── units.json
├── units.md
└── units.schema.json
├── docs
├── assets
│ ├── property_definition.png
│ └── property_index.png
├── publishing.md
└── updating_css_json.md
├── index.js
├── l10n
├── css.json
└── index.js
├── package-lock.json
├── package.json
├── release-please-config.json
└── test
└── lint.js
/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 |
3 | [*]
4 | charset = utf-8
5 | indent_style = space
6 | indent_size = 2
7 | end_of_line = lf
8 | insert_final_newline = true
9 | trim_trailing_whitespace = true
10 |
--------------------------------------------------------------------------------
/.github/CODEOWNERS:
--------------------------------------------------------------------------------
1 | # This file is used to request PR reviews.
2 |
3 | # Default
4 | * @mdn/core-yari-content
5 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/bug.yml:
--------------------------------------------------------------------------------
1 | name: "Issue report"
2 | description: Report an unexpected problem or unintended behavior.
3 | labels: ["needs triage"]
4 | body:
5 | - type: markdown
6 | attributes:
7 | value: |
8 | ### Before you start
9 |
10 | **Want to fix the problem yourself?** This project is open source and we welcome fixes and improvements from the community!
11 |
12 | ↩ Check the project [CONTRIBUTING.md](../blob/main/CONTRIBUTING.md) guide to see how to get started.
13 |
14 | ---
15 | - type: textarea
16 | id: problem
17 | attributes:
18 | label: What information was incorrect, unhelpful, or incomplete?
19 | validations:
20 | required: true
21 | - type: textarea
22 | id: expected
23 | attributes:
24 | label: What did you expect to see?
25 | validations:
26 | required: true
27 | - type: textarea
28 | id: references
29 | attributes:
30 | label: Do you have any supporting links, references, or citations?
31 | description: Link to information that helps us confirm your issue.
32 | - type: textarea
33 | id: more-info
34 | attributes:
35 | label: Do you have anything more you want to share?
36 | description: For example, steps to reproduce, screenshots, screen recordings, or sample code.
37 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/config.yml:
--------------------------------------------------------------------------------
1 | blank_issues_enabled: true
2 | contact_links:
3 | - name: Content or feature request
4 | url: https://github.com/mdn/mdn/issues/new/choose
5 | about: Propose new content for MDN Web Docs or submit a feature request using this link.
6 | - name: MDN GitHub Discussions
7 | url: https://github.com/orgs/mdn/discussions
8 | about: Does the issue involve a lot of changes, or is it hard to split it into actionable tasks? Start a discussion before opening an issue.
9 | - name: MDN Web Docs on Discourse
10 | url: https://discourse.mozilla.org/c/mdn/learn/250
11 | about: Need help with assessments on MDN Web Docs? We have a support community for this purpose on Discourse.
12 | - name: Help with code
13 | url: https://stackoverflow.com/
14 | about: If you are stuck and need help with code, StackOverflow is a great resource.
15 |
--------------------------------------------------------------------------------
/.github/PULL_REQUEST_TEMPLATE:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ### Description
7 |
8 |
9 |
10 | ### Motivation
11 |
12 |
13 |
14 | ### Additional details
15 |
16 |
17 |
18 | ### Related issues and pull requests
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/.github/dependabot.yml:
--------------------------------------------------------------------------------
1 | version: 2
2 |
3 | updates:
4 | - package-ecosystem: npm
5 | directory: "/"
6 | schedule:
7 | interval: daily
8 | open-pull-requests-limit: 10
9 | labels:
10 | - "automated pr"
11 | - "dependencies"
12 | - "javascript"
13 |
14 | - package-ecosystem: "github-actions"
15 | directory: "/"
16 | schedule:
17 | interval: "daily"
18 | labels:
19 | - "automated pr"
20 | - "dependencies"
21 | - "github actions"
22 |
--------------------------------------------------------------------------------
/.github/workflows/idle.yml:
--------------------------------------------------------------------------------
1 | # This workflow is hosted at: https://github.com/mdn/workflows/blob/main/.github/workflows/idle.yml
2 | # Docs for this workflow: https://github.com/mdn/workflows/blob/main/README.md#idle
3 | name: "Label idle issues"
4 |
5 | on:
6 | schedule:
7 | - cron: "0 9 * * 5"
8 |
9 | jobs:
10 | mark-as-idle:
11 | uses: mdn/workflows/.github/workflows/idle.yml@main
12 | with:
13 | target-repo: "mdn/data"
14 |
--------------------------------------------------------------------------------
/.github/workflows/lint.yml:
--------------------------------------------------------------------------------
1 | name: lint
2 | on:
3 | push:
4 | branches:
5 | - main
6 | pull_request:
7 | jobs:
8 | build:
9 | runs-on: ubuntu-latest
10 | steps:
11 | - uses: actions/checkout@v4
12 | - uses: actions/setup-node@v4
13 | with:
14 | node-version-file: ".nvmrc"
15 | - run: npm ci
16 | - run: npm test
17 |
--------------------------------------------------------------------------------
/.github/workflows/publish-release.yml:
--------------------------------------------------------------------------------
1 | name: publish-release
2 |
3 | on:
4 | push:
5 | branches:
6 | - main
7 |
8 | workflow_dispatch:
9 | inputs:
10 | force-npm-publish:
11 | description: "Force npm publish"
12 | type: boolean
13 |
14 | permissions:
15 | contents: write
16 | pull-requests: write
17 |
18 | jobs:
19 | publish-release:
20 | if: github.repository == 'mdn/data'
21 | runs-on: ubuntu-latest
22 |
23 | steps:
24 | - name: Release
25 | uses: GoogleCloudPlatform/release-please-action@v4
26 | id: release
27 |
28 | - name: Setup
29 | if: ${{ github.event.inputs.force-npm-publish || steps.release.outputs.release_created }}
30 | uses: actions/checkout@v4
31 |
32 | - name: Checkout
33 | if: ${{ github.event.inputs.force-npm-publish || steps.release.outputs.release_created }}
34 | uses: actions/setup-node@v4
35 | with:
36 | registry-url: "https://registry.npmjs.org/"
37 | node-version-file: ".nvmrc"
38 |
39 | - name: Install
40 | if: ${{ github.event.inputs.force-npm-publish || steps.release.outputs.release_created }}
41 | run: npm ci
42 |
43 | - name: Publish
44 | if: ${{ github.event.inputs.force-npm-publish || steps.release.outputs.release_created }}
45 | run: npm publish
46 | env:
47 | NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
48 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | /node_modules/
2 | .DS_Store
3 |
--------------------------------------------------------------------------------
/.npmignore:
--------------------------------------------------------------------------------
1 | .travis.yml
2 | .editorconfig
3 |
--------------------------------------------------------------------------------
/.nvmrc:
--------------------------------------------------------------------------------
1 | v18
2 |
--------------------------------------------------------------------------------
/.prettierrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "bracketSameLine": true
3 | }
4 |
--------------------------------------------------------------------------------
/.release-please-manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | ".": "2.21.0"
3 | }
4 |
--------------------------------------------------------------------------------
/CODE_OF_CONDUCT.md:
--------------------------------------------------------------------------------
1 | # Code of conduct
2 |
3 | This repository is governed by Mozilla's code of conduct and etiquette guidelines.
4 | For more details, read [Mozilla's Community Participation Guidelines](https://www.mozilla.org/about/governance/policies/participation/).
5 |
6 | ## Reporting violations
7 |
8 | For more information on how to report violations of the Community Participation Guidelines, read the [How to report](https://www.mozilla.org/about/governance/policies/participation/reporting/) page.
9 |
--------------------------------------------------------------------------------
/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | # MDN data contribution guide
2 |
3 | Thanks for taking the time to contribute to [MDN Web Docs](https://developer.mozilla.org)! :tada:
4 | This file lists some general guidelines to help you contribute effectively.
5 |
6 | ## Publishing a release
7 |
8 | Details about publishing a release can be found in the [publishing guide](./docs/publishing.md).
9 |
10 | ## Types of contribution
11 |
12 | There are many ways you can help improve this repository! For example:
13 |
14 | ### General tasks
15 |
16 | - **Fixing a bug:** we have a list of [issues](https://github.com/mdn/data/issues),
17 | or maybe you found your own.
18 | - **Reviewing a pull request:** there is a list of [PRs](https://github.com/mdn/data/pulls).
19 | Let us know if these look good to you.
20 | - **Localizing strings:** translations are in the [l10n folder](./l10n). You can add your locale.
21 |
22 | **Note**: Commits need to adhere to [conventional commits](https://www.conventionalcommits.org/en/v1.0.0/) and only `fix:` and `feat:` commits are considered.
23 |
24 | ### CSS data tasks
25 |
26 | - **Updating CSS data**: familiarize yourself with the [CSS schema files](./css/README.md) and add missing CSS data. An additional guide is provided in the [How to update the CSS JSON DB](./docs/updating_css_json.md) document.
27 |
28 | ## Validating the data
29 |
30 | You can use `npm test` to validate data against the schema. You might need to install the devDependencies using `npm install --dev`.
31 |
32 | ## Reviewer's checklist
33 |
34 | Not everything is enforced or validated by the schema. A few things a reviewer should pay attention to:
35 |
36 | - Make sure `npm test` reports no errors.
37 | - Double check the data using the latest specifications.
38 |
39 | ## Code style
40 |
41 | The JSON files should be formatted according to the [.editorconfig](.editorconfig) file.
42 |
43 | ## Licensing
44 |
45 | Please note that the compatibility data is made available under the
46 | [CC0 1.0 Universal (public domain) license](LICENSE),
47 | so any contributions must be compatible with that license. If you're not sure about that, just ask.
48 |
49 | ## Getting help
50 |
51 | If you need help with this repository or have any questions, contact the MDN team
52 | in the [#mdn](irc://irc.mozilla.org/mdn) IRC channel on irc.mozilla.org or write us on [discourse](https://discourse.mozilla-community.org/c/mdn).
53 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | CC0 1.0 Universal
2 |
3 | Statement of Purpose
4 |
5 | The laws of most jurisdictions throughout the world automatically confer
6 | exclusive Copyright and Related Rights (defined below) upon the creator and
7 | subsequent owner(s) (each and all, an "owner") of an original work of
8 | authorship and/or a database (each, a "Work").
9 |
10 | Certain owners wish to permanently relinquish those rights to a Work for the
11 | purpose of contributing to a commons of creative, cultural and scientific
12 | works ("Commons") that the public can reliably and without fear of later
13 | claims of infringement build upon, modify, incorporate in other works, reuse
14 | and redistribute as freely as possible in any form whatsoever and for any
15 | purposes, including without limitation commercial purposes. These owners may
16 | contribute to the Commons to promote the ideal of a free culture and the
17 | further production of creative, cultural and scientific works, or to gain
18 | reputation or greater distribution for their Work in part through the use and
19 | efforts of others.
20 |
21 | For these and/or other purposes and motivations, and without any expectation
22 | of additional consideration or compensation, the person associating CC0 with a
23 | Work (the "Affirmer"), to the extent that he or she is an owner of Copyright
24 | and Related Rights in the Work, voluntarily elects to apply CC0 to the Work
25 | and publicly distribute the Work under its terms, with knowledge of his or her
26 | Copyright and Related Rights in the Work and the meaning and intended legal
27 | effect of CC0 on those rights.
28 |
29 | 1. Copyright and Related Rights. A Work made available under CC0 may be
30 | protected by copyright and related or neighboring rights ("Copyright and
31 | Related Rights"). Copyright and Related Rights include, but are not limited
32 | to, the following:
33 |
34 | i. the right to reproduce, adapt, distribute, perform, display, communicate,
35 | and translate a Work;
36 |
37 | ii. moral rights retained by the original author(s) and/or performer(s);
38 |
39 | iii. publicity and privacy rights pertaining to a person's image or likeness
40 | depicted in a Work;
41 |
42 | iv. rights protecting against unfair competition in regards to a Work,
43 | subject to the limitations in paragraph 4(a), below;
44 |
45 | v. rights protecting the extraction, dissemination, use and reuse of data in
46 | a Work;
47 |
48 | vi. database rights (such as those arising under Directive 96/9/EC of the
49 | European Parliament and of the Council of 11 March 1996 on the legal
50 | protection of databases, and under any national implementation thereof,
51 | including any amended or successor version of such directive); and
52 |
53 | vii. other similar, equivalent or corresponding rights throughout the world
54 | based on applicable law or treaty, and any national implementations thereof.
55 |
56 | 2. Waiver. To the greatest extent permitted by, but not in contravention of,
57 | applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and
58 | unconditionally waives, abandons, and surrenders all of Affirmer's Copyright
59 | and Related Rights and associated claims and causes of action, whether now
60 | known or unknown (including existing as well as future claims and causes of
61 | action), in the Work (i) in all territories worldwide, (ii) for the maximum
62 | duration provided by applicable law or treaty (including future time
63 | extensions), (iii) in any current or future medium and for any number of
64 | copies, and (iv) for any purpose whatsoever, including without limitation
65 | commercial, advertising or promotional purposes (the "Waiver"). Affirmer makes
66 | the Waiver for the benefit of each member of the public at large and to the
67 | detriment of Affirmer's heirs and successors, fully intending that such Waiver
68 | shall not be subject to revocation, rescission, cancellation, termination, or
69 | any other legal or equitable action to disrupt the quiet enjoyment of the Work
70 | by the public as contemplated by Affirmer's express Statement of Purpose.
71 |
72 | 3. Public License Fallback. Should any part of the Waiver for any reason be
73 | judged legally invalid or ineffective under applicable law, then the Waiver
74 | shall be preserved to the maximum extent permitted taking into account
75 | Affirmer's express Statement of Purpose. In addition, to the extent the Waiver
76 | is so judged Affirmer hereby grants to each affected person a royalty-free,
77 | non transferable, non sublicensable, non exclusive, irrevocable and
78 | unconditional license to exercise Affirmer's Copyright and Related Rights in
79 | the Work (i) in all territories worldwide, (ii) for the maximum duration
80 | provided by applicable law or treaty (including future time extensions), (iii)
81 | in any current or future medium and for any number of copies, and (iv) for any
82 | purpose whatsoever, including without limitation commercial, advertising or
83 | promotional purposes (the "License"). The License shall be deemed effective as
84 | of the date CC0 was applied by Affirmer to the Work. Should any part of the
85 | License for any reason be judged legally invalid or ineffective under
86 | applicable law, such partial invalidity or ineffectiveness shall not
87 | invalidate the remainder of the License, and in such case Affirmer hereby
88 | affirms that he or she will not (i) exercise any of his or her remaining
89 | Copyright and Related Rights in the Work or (ii) assert any associated claims
90 | and causes of action with respect to the Work, in either case contrary to
91 | Affirmer's express Statement of Purpose.
92 |
93 | 4. Limitations and Disclaimers.
94 |
95 | a. No trademark or patent rights held by Affirmer are waived, abandoned,
96 | surrendered, licensed or otherwise affected by this document.
97 |
98 | b. Affirmer offers the Work as-is and makes no representations or warranties
99 | of any kind concerning the Work, express, implied, statutory or otherwise,
100 | including without limitation warranties of title, merchantability, fitness
101 | for a particular purpose, non infringement, or the absence of latent or
102 | other defects, accuracy, or the present or absence of errors, whether or not
103 | discoverable, all to the greatest extent permissible under applicable law.
104 |
105 | c. Affirmer disclaims responsibility for clearing rights of other persons
106 | that may apply to the Work or any use thereof, including without limitation
107 | any person's Copyright and Related Rights in the Work. Further, Affirmer
108 | disclaims responsibility for obtaining any necessary consents, permissions
109 | or other rights required for any use of the Work.
110 |
111 | d. Affirmer understands and acknowledges that Creative Commons is not a
112 | party to this document and has no duty or obligation with respect to this
113 | CC0 or use of the Work.
114 |
115 | For more information, please see
116 |
117 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Welcome to MDN data
2 |
3 | > **Note**
4 | > We are in the process of deprecating the `mdn/data` package in favor of [`w3c/webref`](https://github.com/w3c/webref).
5 | > If you depend on this project, let us know in our community [GitHub discussions](https://github.com/mdn/mdn-community/discussions/categories/platform).
6 | > Thank you.
7 |
8 | [](https://www.npmjs.com/package/mdn-data)
9 | [](https://github.com/mdn/data/actions/workflows/lint.yml)
10 |
11 | This repository contains general data for Web technologies and is maintained by the [MDN team at Mozilla](https://wiki.mozilla.org/MDN).
12 |
13 | ## Repository contents
14 |
15 | The data in this repository is used in MDN Web Docs to build [information boxes](https://developer.mozilla.org/en-US/docs/Web/CSS/background) and [sidebar navigation](https://developer.mozilla.org/en-US/docs/Web/API/Window).
16 | External tools make use of this data as well, for example, the [CSSTree](https://github.com/csstree/csstree/) CSS parser.
17 |
18 | There's a top-level directory for each broad area covered: for example, `api` and `css`.
19 | Inside each of these directories is one or more JSON files containing the data.
20 |
21 | ### api
22 |
23 | Contains data about Web APIs:
24 |
25 | - API inheritance (interface inheritance and mixin implementations)
26 |
27 | ### css
28 |
29 | Contains data about:
30 |
31 | - CSS at-rules
32 | - CSS functions
33 | - CSS properties
34 | - CSS selectors
35 | - CSS syntaxes
36 | - CSS types
37 | - CSS units
38 |
39 | For more information, see the [CSS data](./css/README.md) documentation and the [Updating CSS JSON DB](./docs/updating_css_json.md) guide.
40 |
41 | ### l10n
42 |
43 | The l10n folder contains localization strings that are used in the various
44 | json files throughout this repository.
45 |
46 | ## Problems?
47 |
48 | If you find a problem, please [file an issue](https://github.com/mdn/data/issues/new).
49 |
50 | ## Contributing
51 |
52 | We're very happy to accept contributions to this data.
53 | Please familiarize yourself with the schema for the data you're editing, and send us a pull request.
54 | See the [CONTRIBUTING.md](./CONTRIBUTING.md) document for more information.
55 |
56 | ## See also
57 |
58 | - [https://github.com/mdn/browser-compat-data](https://github.com/mdn/browser-compat-data)
59 | for compatibility data for Web technologies
60 |
--------------------------------------------------------------------------------
/REVIEWING.md:
--------------------------------------------------------------------------------
1 | # Reviewing guide
2 |
3 | All reviewers must abide by the [code of conduct](CODE_OF_CONDUCT.md); they are also protected by the code of conduct.
4 | A reviewer should not tolerate poor behavior and is encouraged to [report any behavior](CODE_OF_CONDUCT.md#Reporting_violations) that violates the code of conduct.
5 |
6 | ## Review process
7 |
8 | The MDN Web Docs team has a well-defined review process that must be followed by reviewers in all repositories under the GitHub MDN organization.
9 | This process is described in detail on the [Pull request guidelines](https://developer.mozilla.org/en-US/docs/MDN/Community/Pull_requests) page.
10 |
--------------------------------------------------------------------------------
/api/index.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | inheritance: require('./inheritance'),
3 | }
4 |
--------------------------------------------------------------------------------
/api/inheritance.md:
--------------------------------------------------------------------------------
1 | # Inheritance
2 |
3 | [data](https://github.com/mdn/data/blob/main/api/inheritance.json) |
4 | [schema](https://github.com/mdn/data/blob/main/api/inheritance.schema.json)
5 |
6 | Interfaces of Web APIs can inherit from other interfaces or implement [mixins](https://developer.mozilla.org/en-US/docs/Glossary/Mixin). For each interface, this data informs about the inherited (parent) interface and the implemented mixins.
7 |
8 | ## Structure for inheritance data of a specific name
9 |
10 | The overall inheritance data is an object with one property per interface.
11 | Each interface entry looks like the following example (E.g. for the DocumentFragment interface).
12 |
13 | ```json
14 | "DocumentFragment": {
15 | "inherits": "Node",
16 | "implements": [
17 | "ParentNode",
18 | "LegacyQueryInterface"
19 | ]
20 | }
21 | ```
22 |
23 | The 2 properties are both required.
24 | * `inherits` (a string or null): the name of the interface it inherits properties and methods from. If null, it means it doesn't inherit from any interface.
25 | * `implements` (array of strings): the list of mixins the interface implements. The array can be empty.
26 |
--------------------------------------------------------------------------------
/api/inheritance.schema.json:
--------------------------------------------------------------------------------
1 | {
2 | "type": "object",
3 | "additionalProperties": {
4 | "type": "object",
5 | "additionalProperties": false,
6 | "properties": {
7 | "inherits": {
8 | "oneOf": [
9 | {
10 | "type": "null"
11 | },
12 | {
13 | "type": "string",
14 | "minLength": 1
15 | }
16 | ]
17 | },
18 | "implements": {
19 | "minItems": 0,
20 | "uniqueItems": true,
21 | "items": {
22 | "type": "string"
23 | }
24 | }
25 | },
26 | "required": [
27 | "inherits",
28 | "implements"
29 | ]
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/css/README.md:
--------------------------------------------------------------------------------
1 | # MDN CSS data
2 |
3 | This folder contains data about the different features of the [CSS](https://developer.mozilla.org/en-US/docs/Web/CSS) language.
4 |
5 | ## How to update the CSS JSON DB
6 |
7 | A guide to making changes is provided in the [How to update the CSS JSON DB](../docs/updating_css_json.md) document.
8 |
9 | ## Different types of CSS data
10 |
11 | The CSS data is split into these parts:
12 |
13 | - **at-rules**:
14 | [data](https://github.com/mdn/data/blob/main/css/at-rules.json) |
15 | [schema](https://github.com/mdn/data/blob/main/css/at-rules.schema.json) |
16 | [docs](https://github.com/mdn/data/blob/main/css/at-rules.md)
17 | - **functions**:
18 | [data](https://github.com/mdn/data/blob/main/css/functions.json) |
19 | [schema](https://github.com/mdn/data/blob/main/css/functions.schema.json) |
20 | [docs](https://github.com/mdn/data/blob/main/css/functions.md)
21 | - **properties**:
22 | [data](https://github.com/mdn/data/blob/main/css/properties.json) |
23 | [schema](https://github.com/mdn/data/blob/main/css/properties.schema.json) |
24 | [docs](https://github.com/mdn/data/blob/main/css/properties.md)
25 | - **selectors**:
26 | [data](https://github.com/mdn/data/blob/main/css/selectors.json) |
27 | [schema](https://github.com/mdn/data/blob/main/css/selectors.schema.json) |
28 | [docs](https://github.com/mdn/data/blob/main/css/selectors.md)
29 | - **syntaxes**:
30 | [data](https://github.com/mdn/data/blob/main/css/syntaxes.json) |
31 | [schema](https://github.com/mdn/data/blob/main/css/syntaxes.schema.json) |
32 | [docs](https://github.com/mdn/data/blob/main/css/syntaxes.md)
33 | - **types**:
34 | [data](https://github.com/mdn/data/blob/main/css/types.json) |
35 | [schema](https://github.com/mdn/data/blob/main/css/types.schema.json) |
36 | [docs](https://github.com/mdn/data/blob/main/css/types.md)
37 | - **units**:
38 | [data](https://github.com/mdn/data/blob/main/css/units.json) |
39 | [schema](https://github.com/mdn/data/blob/main/css/units.schema.json) |
40 | [docs](https://github.com/mdn/data/blob/main/css/units.md)
41 |
--------------------------------------------------------------------------------
/css/at-rules.json:
--------------------------------------------------------------------------------
1 | {
2 | "@charset": {
3 | "syntax": "@charset \"\";",
4 | "groups": [
5 | "CSS Syntax"
6 | ],
7 | "status": "standard",
8 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/@charset"
9 | },
10 | "@counter-style": {
11 | "syntax": "@counter-style {\n [ system: ; ] ||\n [ symbols: ; ] ||\n [ additive-symbols: ; ] ||\n [ negative: ; ] ||\n [ prefix: ; ] ||\n [ suffix: ; ] ||\n [ range: ; ] ||\n [ pad: ; ] ||\n [ speak-as: ; ] ||\n [ fallback: ; ]\n}",
12 | "interfaces": [
13 | "CSSCounterStyleRule"
14 | ],
15 | "groups": [
16 | "CSS Counter Styles"
17 | ],
18 | "descriptors": {
19 | "additive-symbols": {
20 | "syntax": "[ && ]#",
21 | "media": "all",
22 | "initial": "n/a (required)",
23 | "percentages": "no",
24 | "computed": "asSpecified",
25 | "order": "orderOfAppearance",
26 | "status": "standard",
27 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/@counter-style/additive-symbols"
28 | },
29 | "fallback": {
30 | "syntax": "",
31 | "media": "all",
32 | "initial": "decimal",
33 | "percentages": "no",
34 | "computed": "asSpecified",
35 | "order": "uniqueOrder",
36 | "status": "standard",
37 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/@counter-style/fallback"
38 | },
39 | "negative": {
40 | "syntax": " ?",
41 | "media": "all",
42 | "initial": "\"-\" hyphen-minus",
43 | "percentages": "no",
44 | "computed": "asSpecified",
45 | "order": "orderOfAppearance",
46 | "status": "standard",
47 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/@counter-style/negative"
48 | },
49 | "pad": {
50 | "syntax": " && ",
51 | "media": "all",
52 | "initial": "0 \"\"",
53 | "percentages": "no",
54 | "computed": "asSpecified",
55 | "order": "uniqueOrder",
56 | "status": "standard",
57 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/@counter-style/pad"
58 | },
59 | "prefix": {
60 | "syntax": "",
61 | "media": "all",
62 | "initial": "\"\"",
63 | "percentages": "no",
64 | "computed": "asSpecified",
65 | "order": "uniqueOrder",
66 | "status": "standard",
67 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/@counter-style/prefix"
68 | },
69 | "range": {
70 | "syntax": "[ [ | infinite ]{2} ]# | auto",
71 | "media": "all",
72 | "initial": "auto",
73 | "percentages": "no",
74 | "computed": "asSpecified",
75 | "order": "orderOfAppearance",
76 | "status": "standard",
77 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/@counter-style/range"
78 | },
79 | "speak-as": {
80 | "syntax": "auto | bullets | numbers | words | spell-out | ",
81 | "media": "all",
82 | "initial": "auto",
83 | "percentages": "no",
84 | "computed": "asSpecified",
85 | "order": "uniqueOrder",
86 | "status": "standard",
87 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/@counter-style/speak-as"
88 | },
89 | "suffix": {
90 | "syntax": "",
91 | "media": "all",
92 | "initial": "\". \"",
93 | "percentages": "no",
94 | "computed": "asSpecified",
95 | "order": "uniqueOrder",
96 | "status": "standard",
97 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/@counter-style/suffix"
98 | },
99 | "symbols": {
100 | "syntax": "+",
101 | "media": "all",
102 | "initial": "n/a (required)",
103 | "percentages": "no",
104 | "computed": "asSpecified",
105 | "order": "orderOfAppearance",
106 | "status": "standard",
107 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/@counter-style/symbols"
108 | },
109 | "system": {
110 | "syntax": "cyclic | numeric | alphabetic | symbolic | additive | [ fixed ? ] | [ extends ]",
111 | "media": "all",
112 | "initial": "symbolic",
113 | "percentages": "no",
114 | "computed": "asSpecified",
115 | "order": "uniqueOrder",
116 | "status": "standard",
117 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/@counter-style/system"
118 | }
119 | },
120 | "status": "standard",
121 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/@counter-style"
122 | },
123 | "@container": {
124 | "syntax": "@container # {\n \n}",
125 | "interfaces": [
126 | "CSSContainerRule"
127 | ],
128 | "groups": [
129 | "CSS Conditional Rules"
130 | ],
131 | "status": "standard",
132 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/@container"
133 | },
134 | "@document": {
135 | "syntax": "@document [ | url-prefix() | domain() | media-document() | regexp() ]# {\n \n}",
136 | "interfaces": [
137 | "CSSDocumentRule"
138 | ],
139 | "groups": [
140 | "CSS Conditional Rules"
141 | ],
142 | "status": "nonstandard",
143 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/@document"
144 | },
145 | "@font-face": {
146 | "syntax": "@font-face {\n [ font-family: ; ] ||\n [ src: ; ] ||\n [ unicode-range: ; ] ||\n [ font-variant: ; ] ||\n [ font-feature-settings: ; ] ||\n [ font-variation-settings: ; ] ||\n [ font-stretch: ; ] ||\n [ font-weight: ; ] ||\n [ font-style: ; ] ||\n [ size-adjust: ; ] ||\n [ ascent-override: ; ] ||\n [ descent-override: ; ] ||\n [ line-gap-override: ; ]\n}",
147 | "interfaces": [
148 | "CSSFontFaceRule"
149 | ],
150 | "groups": [
151 | "CSS Fonts"
152 | ],
153 | "descriptors": {
154 | "ascent-override": {
155 | "syntax": "normal | ",
156 | "media": "all",
157 | "initial": "normal",
158 | "percentages": "asSpecified",
159 | "computed": "asSpecified",
160 | "order": "orderOfAppearance",
161 | "status": "standard",
162 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/@font-face/ascent-override"
163 | },
164 | "descent-override": {
165 | "syntax": "normal | ",
166 | "media": "all",
167 | "initial": "normal",
168 | "percentages": "asSpecified",
169 | "computed": "asSpecified",
170 | "order": "orderOfAppearance",
171 | "status": "standard",
172 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/@font-face/descent-override"
173 | },
174 | "font-display": {
175 | "syntax": "auto | block | swap | fallback | optional",
176 | "media": "visual",
177 | "percentages": "no",
178 | "initial": "auto",
179 | "computed": "asSpecified",
180 | "order": "uniqueOrder",
181 | "status": "standard",
182 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/@font-face/font-display"
183 | },
184 | "font-family": {
185 | "syntax": "",
186 | "media": "all",
187 | "initial": "n/a (required)",
188 | "percentages": "no",
189 | "computed": "asSpecified",
190 | "order": "uniqueOrder",
191 | "status": "standard",
192 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/@font-face/font-family"
193 | },
194 | "font-feature-settings": {
195 | "syntax": "normal | #",
196 | "media": "all",
197 | "initial": "normal",
198 | "percentages": "no",
199 | "computed": "asSpecified",
200 | "order": "orderOfAppearance",
201 | "status": "standard",
202 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/@font-face/font-feature-settings"
203 | },
204 | "font-stretch": {
205 | "syntax": "{1,2}",
206 | "media": "all",
207 | "initial": "normal",
208 | "percentages": "no",
209 | "computed": "asSpecified",
210 | "order": "uniqueOrder",
211 | "status": "obsolete",
212 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/@font-face/font-stretch"
213 | },
214 | "font-style": {
215 | "syntax": "normal | italic | oblique {0,2}",
216 | "media": "all",
217 | "initial": "normal",
218 | "percentages": "no",
219 | "computed": "asSpecified",
220 | "order": "uniqueOrder",
221 | "status": "standard",
222 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/@font-face/font-style"
223 | },
224 | "font-variation-settings": {
225 | "syntax": "normal | [ ]#",
226 | "media": "all",
227 | "initial": "normal",
228 | "percentages": "no",
229 | "computed": "asSpecified",
230 | "order": "orderOfAppearance",
231 | "status": "standard",
232 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/@font-face/font-variation-settings"
233 | },
234 | "font-weight": {
235 | "syntax": "{1,2}",
236 | "media": "all",
237 | "initial": "normal",
238 | "percentages": "no",
239 | "computed": "asSpecified",
240 | "order": "uniqueOrder",
241 | "status": "standard",
242 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/@font-face/font-weight"
243 | },
244 | "line-gap-override": {
245 | "syntax": "normal | ",
246 | "media": "all",
247 | "initial": "normal",
248 | "percentages": "asSpecified",
249 | "computed": "asSpecified",
250 | "order": "orderOfAppearance",
251 | "status": "standard",
252 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/@font-face/line-gap-override"
253 | },
254 | "size-adjust": {
255 | "syntax": "",
256 | "media": "all",
257 | "initial": "100%",
258 | "percentages": "asSpecified",
259 | "computed": "asSpecified",
260 | "order": "orderOfAppearance",
261 | "status": "standard",
262 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/@font-face/size-adjust"
263 | },
264 | "src": {
265 | "syntax": "[ [ format( # ) ]? | local( ) ]#",
266 | "media": "all",
267 | "initial": "n/a (required)",
268 | "percentages": "no",
269 | "computed": "asSpecified",
270 | "order": "orderOfAppearance",
271 | "status": "standard",
272 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/@font-face/src"
273 | },
274 | "unicode-range": {
275 | "syntax": "#",
276 | "media": "all",
277 | "initial": "U+0-10FFFF",
278 | "percentages": "no",
279 | "computed": "asSpecified",
280 | "order": "orderOfAppearance",
281 | "status": "standard",
282 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/@font-face/unicode-range"
283 | }
284 | },
285 | "status": "standard",
286 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/@font-face"
287 | },
288 | "@font-feature-values": {
289 | "syntax": "@font-feature-values # {\n \n}",
290 | "interfaces": [
291 | "CSSFontFeatureValuesRule"
292 | ],
293 | "groups": [
294 | "CSS Fonts"
295 | ],
296 | "status": "standard",
297 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/@font-feature-values"
298 | },
299 | "@font-palette-values": {
300 | "syntax": "@font-palette-values {\n \n}",
301 | "interfaces": [
302 | "CSSFontPaletteValuesRule"
303 | ],
304 | "groups": [
305 | "CSS Fonts"
306 | ],
307 | "descriptors": {
308 | "base-palette": {
309 | "syntax": "light | dark | ",
310 | "media": "all",
311 | "initial": "n/a (required)",
312 | "percentages": "no",
313 | "computed": "asSpecified",
314 | "order": "uniqueOrder",
315 | "status": "standard",
316 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/@font-palette-values/base-palette"
317 | },
318 | "font-family": {
319 | "syntax": "#",
320 | "media": "all",
321 | "initial": "n/a (required)",
322 | "percentages": "no",
323 | "computed": "asSpecified",
324 | "order": "orderOfAppearance",
325 | "status": "standard",
326 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/@font-palette-values/font-family"
327 | },
328 | "override-colors": {
329 | "syntax": "[ ]#",
330 | "media": "all",
331 | "initial": "n/a (required)",
332 | "percentages": "no",
333 | "computed": "asSpecified",
334 | "order": "orderOfAppearance",
335 | "status": "standard",
336 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/@font-palette-values/override-colors"
337 | }
338 | },
339 | "status": "standard",
340 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/@font-palette-values"
341 | },
342 | "@import": {
343 | "syntax": "@import [ | ]\n [ layer | layer() ]?\n [ supports( [ | ] ) ]?\n ? ;",
344 | "interfaces": [
345 | "CSSImportRule"
346 | ],
347 | "groups": [
348 | "CSS Cascading and Inheritance"
349 | ],
350 | "status": "standard",
351 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/@import"
352 | },
353 | "@keyframes": {
354 | "syntax": "@keyframes {\n \n}",
355 | "interfaces": [
356 | "CSSKeyframeRule",
357 | "CSSKeyframesRule"
358 | ],
359 | "groups": [
360 | "CSS Animations"
361 | ],
362 | "status": "standard",
363 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/@keyframes"
364 | },
365 | "@layer": {
366 | "syntax": "@layer [ # | ? {\n \n} ]",
367 | "interfaces": [
368 | "CSSLayerBlockRule",
369 | "CSSLayerStatementRule"
370 | ],
371 | "groups": [
372 | "CSS Cascading and Inheritance"
373 | ],
374 | "status": "standard",
375 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/@layer"
376 | },
377 | "@media": {
378 | "syntax": "@media {\n \n}",
379 | "interfaces": [
380 | "CSSMediaRule"
381 | ],
382 | "groups": [
383 | "CSS Conditional Rules",
384 | "Media Queries"
385 | ],
386 | "status": "standard",
387 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/@media"
388 | },
389 | "@namespace": {
390 | "syntax": "@namespace ? [ | ];",
391 | "interfaces": [
392 | "CSSNamespaceRule"
393 | ],
394 | "groups": [
395 | "CSS Namespaces"
396 | ],
397 | "status": "standard",
398 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/@namespace"
399 | },
400 | "@page": {
401 | "syntax": "@page {\n \n}",
402 | "interfaces": [
403 | "CSSPageRule"
404 | ],
405 | "groups": [
406 | "CSS Paged Media"
407 | ],
408 | "descriptors": {
409 | "bleed": {
410 | "syntax": "auto | ",
411 | "media": [
412 | "visual",
413 | "paged"
414 | ],
415 | "initial": "auto",
416 | "percentages": "no",
417 | "computed": "asSpecified",
418 | "order": "uniqueOrder",
419 | "status": "standard"
420 | },
421 | "marks": {
422 | "syntax": "none | [ crop || cross ]",
423 | "media": [
424 | "visual",
425 | "paged"
426 | ],
427 | "initial": "none",
428 | "percentages": "no",
429 | "computed": "asSpecified",
430 | "order": "orderOfAppearance",
431 | "status": "standard"
432 | },
433 | "page-orientation": {
434 | "syntax": "upright | rotate-left | rotate-right ",
435 | "media": [
436 | "visual",
437 | "paged"
438 | ],
439 | "initial": "upright",
440 | "percentages": "no",
441 | "computed": "asSpecified",
442 | "order": "orderOfAppearance",
443 | "status": "standard",
444 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/@page/page-orientation"
445 | },
446 | "size": {
447 | "syntax": "{1,2} | auto | [ || [ portrait | landscape ] ]",
448 | "media": [
449 | "visual",
450 | "paged"
451 | ],
452 | "initial": "auto",
453 | "percentages": "no",
454 | "computed": "asSpecifiedRelativeToAbsoluteLengths",
455 | "order": "orderOfAppearance",
456 | "status": "standard",
457 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/@page/size"
458 | }
459 | },
460 | "status": "standard",
461 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/@page"
462 | },
463 | "@position-try": {
464 | "syntax": "@position-try {\n \n}",
465 | "interfaces": [
466 | "CSSPositionTryRule"
467 | ],
468 | "groups": [
469 | "CSS Anchor Positioning"
470 | ],
471 | "status": "experimental",
472 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/@position-try"
473 | },
474 | "@property": {
475 | "syntax": "@property {\n \n}",
476 | "interfaces": [
477 | "CSSPropertyRule"
478 | ],
479 | "groups": [
480 | "CSS Houdini"
481 | ],
482 | "descriptors": {
483 | "inherits": {
484 | "syntax": "true | false",
485 | "media": "all",
486 | "percentages": "no",
487 | "initial": "auto",
488 | "computed": "asSpecified",
489 | "order": "uniqueOrder",
490 | "status": "standard",
491 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/@property/inherits"
492 | },
493 | "initial-value": {
494 | "syntax": "?",
495 | "media": "all",
496 | "initial": "n/a (required)",
497 | "percentages": "no",
498 | "computed": "asSpecified",
499 | "order": "uniqueOrder",
500 | "status": "standard",
501 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/@property/initial-value"
502 | },
503 | "syntax": {
504 | "syntax": "",
505 | "media": "all",
506 | "percentages": "no",
507 | "initial": "n/a (required)",
508 | "computed": "asSpecified",
509 | "order": "uniqueOrder",
510 | "status": "standard",
511 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/@property/syntax"
512 | }
513 | },
514 | "status": "standard",
515 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/@property"
516 | },
517 | "@scope": {
518 | "syntax": "@scope [()]? [to ()]? {\n \n}",
519 | "interfaces": [
520 | "CSSScopeRule"
521 | ],
522 | "groups": [
523 | "CSS Conditional Rules"
524 | ],
525 | "status": "standard",
526 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/@scope"
527 | },
528 | "@starting-style": {
529 | "syntax": "@starting-style {\n | \n}",
530 | "interfaces": [
531 | "CSSStartingStyleRule"
532 | ],
533 | "groups": [
534 | "CSS Transitions"
535 | ],
536 | "status": "standard",
537 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/@starting-style"
538 | },
539 | "@supports": {
540 | "syntax": "@supports {\n \n}",
541 | "interfaces": [
542 | "CSSSupportsRule"
543 | ],
544 | "groups": [
545 | "CSS Conditional Rules"
546 | ],
547 | "status": "standard",
548 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/@supports"
549 | },
550 | "@view-transition": {
551 | "syntax": "@view-transition {\n \n}",
552 | "interfaces": [
553 | "CSSViewTransitionRule"
554 | ],
555 | "groups": [
556 | "CSS View Transitions"
557 | ],
558 | "descriptors": {
559 | "navigation": {
560 | "syntax": "auto | none",
561 | "media": "all",
562 | "initial": "none",
563 | "percentages": "no",
564 | "computed": "asSpecified",
565 | "order": "uniqueOrder",
566 | "status": "standard"
567 | },
568 | "types": {
569 | "syntax": "none | +",
570 | "media": "all",
571 | "initial": "none",
572 | "percentages": "no",
573 | "computed": "asSpecified",
574 | "order": "uniqueOrder",
575 | "status": "standard"
576 | }
577 | },
578 | "status": "standard",
579 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/@view-transition"
580 | }
581 | }
582 |
--------------------------------------------------------------------------------
/css/at-rules.md:
--------------------------------------------------------------------------------
1 | # At-rules
2 |
3 | [data](https://github.com/mdn/data/blob/main/css/at-rules.json) |
4 | [schema](https://github.com/mdn/data/blob/main/css/at-rules.schema.json)
5 |
6 | An [at-rule](https://developer.mozilla.org/en-US/docs/Web/CSS/At-rule) is a CSS statement beginning with an at sign (@) that instructs CSS how to behave. There are several available identifiers defining what CSS should do in certain situations.
7 |
8 | ## Structure for simple at-rules
9 |
10 | A simple at-rule object might look like this:
11 |
12 | ```json
13 | "@myRule": {
14 | "syntax": "@myRule {\n \n};",
15 | "groups": [
16 | "CSS myGroup"
17 | ],
18 | "status": "standard"
19 | },
20 | ```
21 |
22 | The 3 properties seen above are all required:
23 |
24 | * `syntax` (string): This is the formal syntax of the at-rule and is usually found in the specification.
25 | * `groups` (array of strings): CSS is organized in modules like "CSS Fonts" or "CSS Animations". MDN organizes features in these groups as well — `groups` should contain the name of the module(s) the at-rule is defined in.
26 | * `status` (enum string): This is either `standard`, `nonstandard`, `experimental` or `obsolete` depending on the standardization status of the feature.
27 |
28 | There are 3 more properties that are optional:
29 | * `mdn_url` (string): a URL linking to the at-rule's page on MDN. This URL must omit the localization part of the URL (such as `en-US/`).
30 | * `interfaces` (array of strings): These are the [CSSOM](https://developer.mozilla.org/en-US/docs/Web/API/CSS_Object_Model) interfaces that belong to the at-rule. Note that inherited interfaces like `CSSGroupingRule` or `CSSConditionRule` should not be included.
31 | * `descriptors` (object): see below
32 |
33 | ## Structure for at-rules with descriptors
34 |
35 | The `descriptors` object (when included) contains one or more objects that describe the different descriptors available on the at-rule. Look at `@font-face`, for example:
36 |
37 | ```json
38 | "@font-face": {
39 | "syntax": "...",
40 | "interfaces": [],
41 | "groups": [],
42 | "descriptors": {
43 | "font-display": {
44 | "syntax": "[ auto | block | swap | fallback | optional ]",
45 | "media": "visual",
46 | "percentages": "no",
47 | "initial": "auto",
48 | "computed": "asSpecified",
49 | "order": "uniqueOrder",
50 | "status": "experimental"
51 | },
52 | "font-family": {
53 | "syntax": "",
54 | "media": "all",
55 | "initial": "n/a (required)",
56 | "percentages": "no",
57 | "computed": "asSpecified",
58 | "order": "uniqueOrder",
59 | "status": "standard"
60 | }
61 | },
62 | "status": "standard"
63 | }
64 | ```
65 |
66 | Each `descriptors` object consists of 7 required properties:
67 | * `syntax` (string): The syntax / possible values of the descriptor.
68 | * `media` (string): The media groups the descriptor applies to, e.g. "all, visual" (multiple values are comma-separated).
69 | * `percentages` (string or array of strings):
70 | * If it is an array, the elements are the other descriptors this descriptor is taking the percentages from (array elements must be in a descriptors list).
71 | * If it is a string, it indicates the percentage value of the descriptor.
72 | * `initial` (string or array of strings):
73 | * If it is an array, the elements are the other descriptors this descriptor is taking the initial values from (array elements must be in a descriptors list).
74 | * If it is a string, it indicates the initial value of the descriptor.
75 | * `computed` (string or array of strings):
76 | * If it is an array, the elements are the other descriptors this descriptor is computed from (array elements must be in a descriptors list).
77 | * If it is a string, it indicates the computed value of the descriptor.
78 | * `order` (enum string): Either `orderOfAppearance` or `uniqueOrder`.
79 |
--------------------------------------------------------------------------------
/css/at-rules.schema.json:
--------------------------------------------------------------------------------
1 | {
2 | "definitions": {
3 | "stringOrPropertyList": {
4 | "oneOf": [
5 | {
6 | "type": "string"
7 | },
8 | {
9 | "type": "array",
10 | "minItems": 1,
11 | "uniqueItems": true,
12 | "items": {
13 | "type": "string",
14 | "property-reference": {
15 | "comment": "property-reference is an extension to the JSON schema validator. Here it jumps 3 levels up in the hierarchy and tests if a value is an existing key in descriptors. See test/validate-schema.js for implementation details.",
16 | "$data": "3"
17 | }
18 | }
19 | }
20 | ]
21 | }
22 | },
23 | "type": "object",
24 | "additionalProperties": {
25 | "type": "object",
26 | "additionalProperties": false,
27 | "properties": {
28 | "syntax": {
29 | "type": "string"
30 | },
31 | "interfaces": {
32 | "type": "array",
33 | "items": {
34 | "type": "string"
35 | }
36 | },
37 | "groups": {
38 | "type": "array",
39 | "minitems": 1,
40 | "uniqueItems": true,
41 | "items": {
42 | "$ref": "definitions.json#/groupList"
43 | }
44 | },
45 | "descriptors": {
46 | "type": "object",
47 | "additionalProperties": {
48 | "type": "object",
49 | "additionalProperties": false,
50 | "properties": {
51 | "syntax": {
52 | "type": "string"
53 | },
54 | "media": {
55 | "oneOf": [
56 | {
57 | "type": "string",
58 | "enum": [
59 | "all",
60 | "continuous",
61 | "paged",
62 | "visual"
63 | ]
64 | },
65 | {
66 | "type": "array",
67 | "minItems": 2,
68 | "uniqueItems": true,
69 | "items": {
70 | "type": "string",
71 | "enum": [
72 | "continuous",
73 | "paged",
74 | "visual"
75 | ]
76 | }
77 | }
78 | ]
79 | },
80 | "initial": {
81 | "$ref": "#/definitions/stringOrPropertyList"
82 | },
83 | "percentages": {
84 | "$ref": "#/definitions/stringOrPropertyList"
85 | },
86 | "computed": {
87 | "$ref": "#/definitions/stringOrPropertyList"
88 | },
89 | "order": {
90 | "enum": [
91 | "orderOfAppearance",
92 | "uniqueOrder"
93 | ]
94 | },
95 | "status": {
96 | "enum": [
97 | "standard",
98 | "nonstandard",
99 | "experimental",
100 | "obsolete"
101 | ]
102 | },
103 | "mdn_url": {
104 | "type": "string",
105 | "pattern": "^https://developer.mozilla.org/docs/Web/CSS/"
106 | }
107 | },
108 | "required": [
109 | "syntax",
110 | "initial",
111 | "percentages",
112 | "computed",
113 | "order",
114 | "status"
115 | ]
116 | }
117 | },
118 | "status": {
119 | "enum": [
120 | "standard",
121 | "nonstandard",
122 | "experimental",
123 | "obsolete"
124 | ]
125 | },
126 | "mdn_url": {
127 | "type": "string",
128 | "pattern": "^https://developer.mozilla.org/docs/Web/CSS/"
129 | }
130 | },
131 | "required": [
132 | "syntax",
133 | "groups",
134 | "status"
135 | ]
136 | }
137 | }
138 |
--------------------------------------------------------------------------------
/css/definitions.json:
--------------------------------------------------------------------------------
1 | {
2 | "groupList": {
3 | "enum": [
4 | "Basic Selectors",
5 | "Combinators",
6 | "Compositing and Blending",
7 | "CSS Anchor Positioning",
8 | "CSS Animations",
9 | "CSS Backgrounds and Borders",
10 | "CSS Basic User Interface",
11 | "CSS Box Alignment",
12 | "CSS Box Model",
13 | "CSS Box Sizing",
14 | "CSS Cascading and Inheritance",
15 | "CSS Color",
16 | "CSS Conditional Rules",
17 | "CSS Containment",
18 | "CSS Counter Styles",
19 | "CSS Custom Properties for Cascading Variables",
20 | "CSS Display",
21 | "CSS Easing Functions",
22 | "CSS Environment Variables",
23 | "CSS Flexible Box Layout",
24 | "CSS Fonts",
25 | "CSS Form Control Styling",
26 | "CSS Fragmentation",
27 | "CSS Generated Content",
28 | "CSS Grid Layout",
29 | "CSS Houdini",
30 | "CSS Images",
31 | "CSS Inline",
32 | "CSS Lists and Counters",
33 | "CSS Logical Properties and Values",
34 | "CSS Masking",
35 | "CSS Mobile Text Size Adjustment",
36 | "CSS Motion Path",
37 | "CSS Multi-column Layout",
38 | "CSS Namespaces",
39 | "CSS Overflow",
40 | "CSS Overscroll Behavior",
41 | "CSS Paged Media",
42 | "CSS Positioned Layout",
43 | "CSS Regions",
44 | "CSS Resolutions",
45 | "CSS Rhythmic Sizing",
46 | "CSS Ruby",
47 | "CSS Scroll Anchoring",
48 | "CSS Scroll Snap",
49 | "CSS Scrollbars Styling",
50 | "CSS Shadow Parts",
51 | "CSS Shapes",
52 | "CSS Speech",
53 | "CSS Syntax",
54 | "CSS Table",
55 | "CSS Text",
56 | "CSS Text Decoration",
57 | "CSS Transforms",
58 | "CSS Transitions",
59 | "CSS Types",
60 | "CSS Values and Units",
61 | "CSS View Transitions",
62 | "CSS Viewport",
63 | "CSS Will Change",
64 | "CSS Writing Modes",
65 | "Filter Effects",
66 | "Grouping Selectors",
67 | "MathML",
68 | "Media Queries",
69 | "Microsoft Extensions",
70 | "Motion Path",
71 | "Mozilla Extensions",
72 | "Pointer Events",
73 | "Pseudo",
74 | "Pseudo-classes",
75 | "Pseudo-elements",
76 | "Selectors",
77 | "Scalable Vector Graphics",
78 | "Scroll-driven Animations",
79 | "WebKit Extensions"
80 | ]
81 | }
82 | }
83 |
--------------------------------------------------------------------------------
/css/functions.json:
--------------------------------------------------------------------------------
1 | {
2 | "abs()": {
3 | "syntax": "abs( )",
4 | "groups": [
5 | "CSS Values and Units"
6 | ],
7 | "status": "standard",
8 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/abs"
9 | },
10 | "acos()": {
11 | "syntax": "acos( )",
12 | "groups": [
13 | "CSS Values and Units"
14 | ],
15 | "status": "standard",
16 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/acos"
17 | },
18 | "anchor()": {
19 | "syntax": "anchor( ? && , ? )",
20 | "groups": [
21 | "CSS Anchor Positioning"
22 | ],
23 | "status": "experimental",
24 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/anchor"
25 | },
26 | "anchor-size()": {
27 | "syntax": "anchor-size( [ || ]? , ? )",
28 | "groups": [
29 | "CSS Anchor Positioning"
30 | ],
31 | "status": "experimental",
32 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/anchor-size"
33 | },
34 | "asin()": {
35 | "syntax": "asin( )",
36 | "groups": [
37 | "CSS Values and Units"
38 | ],
39 | "status": "standard",
40 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/asin"
41 | },
42 | "atan()": {
43 | "syntax": "atan( )",
44 | "groups": [
45 | "CSS Values and Units"
46 | ],
47 | "status": "standard",
48 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/atan"
49 | },
50 | "atan2()": {
51 | "syntax": "atan2( , )",
52 | "groups": [
53 | "CSS Values and Units"
54 | ],
55 | "status": "standard",
56 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/atan2"
57 | },
58 | "attr()": {
59 | "syntax": "attr( ? [, ]? )",
60 | "groups": [
61 | "CSS Values and Units"
62 | ],
63 | "status": "standard",
64 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/attr"
65 | },
66 | "blur()": {
67 | "syntax": "blur( ? )",
68 | "groups": [
69 | "Filter Effects"
70 | ],
71 | "status": "standard",
72 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/filter-function/blur"
73 | },
74 | "brightness()": {
75 | "syntax": "brightness( [ | ]? )",
76 | "groups": [
77 | "Filter Effects"
78 | ],
79 | "status": "standard",
80 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/filter-function/brightness"
81 | },
82 | "calc()": {
83 | "syntax": "calc( )",
84 | "groups": [
85 | "CSS Values and Units"
86 | ],
87 | "status": "standard",
88 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/calc"
89 | },
90 | "calc-size()": {
91 | "syntax": "calc-size( , )",
92 | "groups": [
93 | "CSS Values and Units"
94 | ],
95 | "status": "experimental",
96 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/calc-size"
97 | },
98 | "circle()": {
99 | "syntax": "circle( ? [ at ]? )",
100 | "groups": [
101 | "CSS Shapes"
102 | ],
103 | "status": "standard",
104 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/basic-shape/circle"
105 | },
106 | "clamp()": {
107 | "syntax": "clamp( #{3} )",
108 | "groups": [
109 | "CSS Values and Units"
110 | ],
111 | "status": "standard",
112 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/clamp"
113 | },
114 | "color()": {
115 | "syntax": "color( [ from ]? [ / [ | none ] ]? )",
116 | "groups": [
117 | "CSS Color"
118 | ],
119 | "status": "standard",
120 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/color_value/color"
121 | },
122 | "color-mix()": {
123 | "syntax": "color-mix( , [ && ? ]#{2})",
124 | "groups": [
125 | "CSS Color"
126 | ],
127 | "status": "standard",
128 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/color_value/color-mix"
129 | },
130 | "conic-gradient()": {
131 | "syntax": "conic-gradient( [ ] )",
132 | "groups": [
133 | "CSS Images"
134 | ],
135 | "status": "standard",
136 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/gradient/conic-gradient"
137 | },
138 | "contrast()": {
139 | "syntax": "contrast( [ | ]? )",
140 | "groups": [
141 | "Filter Effects"
142 | ],
143 | "status": "standard",
144 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/filter-function/contrast"
145 | },
146 | "cos()": {
147 | "syntax": "cos( )",
148 | "groups": [
149 | "CSS Values and Units"
150 | ],
151 | "status": "standard",
152 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/cos"
153 | },
154 | "counter()": {
155 | "syntax": "counter( , ? )",
156 | "groups": [
157 | "CSS Lists and Counters"
158 | ],
159 | "status": "standard",
160 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/counter"
161 | },
162 | "counters()": {
163 | "syntax": "counters( , , ? )",
164 | "groups": [
165 | "CSS Lists and Counters"
166 | ],
167 | "status": "standard",
168 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/counters"
169 | },
170 | "cross-fade()": {
171 | "syntax": "cross-fade( , ? )",
172 | "groups": [
173 | "CSS Images"
174 | ],
175 | "status": "standard",
176 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/cross-fade"
177 | },
178 | "cubic-bezier()": {
179 | "syntax": "cubic-bezier( [ , ]#{2} )",
180 | "groups": [
181 | "CSS Easing Functions"
182 | ],
183 | "status": "standard",
184 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/easing-function/cubic-bezier"
185 | },
186 | "drop-shadow()": {
187 | "syntax": "drop-shadow( [ ? && {2,3} ] )",
188 | "groups": [
189 | "Filter Effects"
190 | ],
191 | "status": "standard",
192 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/filter-function/drop-shadow"
193 | },
194 | "element()": {
195 | "syntax": "element( )",
196 | "groups": [
197 | "CSS Images"
198 | ],
199 | "status": "experimental",
200 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/element"
201 | },
202 | "ellipse()": {
203 | "syntax": "ellipse( ? [ at ]? )",
204 | "groups": [
205 | "CSS Shapes"
206 | ],
207 | "status": "standard",
208 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/basic-shape/ellipse"
209 | },
210 | "env()": {
211 | "syntax": "env( , ? )",
212 | "groups": [
213 | "CSS Environment Variables"
214 | ],
215 | "status": "standard",
216 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/env"
217 | },
218 | "exp()": {
219 | "syntax": "exp( )",
220 | "groups": [
221 | "CSS Values and Units"
222 | ],
223 | "status": "standard",
224 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/exp"
225 | },
226 | "fit-content()": {
227 | "syntax": "fit-content( )",
228 | "groups": [
229 | "CSS Box Sizing",
230 | "CSS Grid Layout"
231 | ],
232 | "status": "standard",
233 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/fit-content_function"
234 | },
235 | "grayscale()": {
236 | "syntax": "grayscale( [ | ]? )",
237 | "groups": [
238 | "Filter Effects"
239 | ],
240 | "status": "standard",
241 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/filter-function/grayscale"
242 | },
243 | "hsl()": {
244 | "syntax": "hsl( , , , ? ) | hsl( [ | none ] [ | | none ] [ | | none ] [ / [ | none ] ]? )",
245 | "groups": [
246 | "CSS Color"
247 | ],
248 | "status": "standard",
249 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/color_value/hsl"
250 | },
251 | "hsla()": {
252 | "syntax": "hsla( , , , ? ) | hsla( [ | none ] [ | | none ] [ | | none ] [ / [ | none ] ]? )",
253 | "groups": [
254 | "CSS Color"
255 | ],
256 | "status": "nonstandard",
257 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/color_value/hsl"
258 | },
259 | "hue-rotate()": {
260 | "syntax": "hue-rotate( [ | ]? )",
261 | "groups": [
262 | "Filter Effects"
263 | ],
264 | "status": "standard",
265 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/filter-function/hue-rotate"
266 | },
267 | "hwb()": {
268 | "syntax": "hwb( [ | none ] [ | | none ] [ | | none ] [ / [ | none ] ]? )",
269 | "groups": [
270 | "CSS Color"
271 | ],
272 | "status": "standard",
273 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/color_value/hwb"
274 | },
275 | "hypot()": {
276 | "syntax": "hypot( # )",
277 | "groups": [
278 | "CSS Values and Units"
279 | ],
280 | "status": "standard",
281 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/hypot"
282 | },
283 | "image()": {
284 | "syntax": "image( ? [ ? , ? ]! )",
285 | "groups": [
286 | "CSS Images"
287 | ],
288 | "status": "standard",
289 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/image/image"
290 | },
291 | "image-set()": {
292 | "syntax": "image-set( # )",
293 | "groups": [
294 | "CSS Images"
295 | ],
296 | "status": "standard",
297 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/image/image-set"
298 | },
299 | "inset()": {
300 | "syntax": "inset( {1,4} [ round <'border-radius'> ]? )",
301 | "groups": [
302 | "CSS Shapes"
303 | ],
304 | "status": "standard",
305 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/basic-shape/inset"
306 | },
307 | "invert()": {
308 | "syntax": "invert( [ | ]? )",
309 | "groups": [
310 | "Filter Effects"
311 | ],
312 | "status": "standard",
313 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/filter-function/invert"
314 | },
315 | "lab()": {
316 | "syntax": "lab( [ | | none] [ | | none] [ | | none] [ / [ | none] ]? )",
317 | "groups": [
318 | "CSS Color"
319 | ],
320 | "status": "standard",
321 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/color_value/lab"
322 | },
323 | "layer()": {
324 | "syntax": "layer( )",
325 | "groups": [
326 | "CSS Cascading and Inheritance"
327 | ],
328 | "status": "standard",
329 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/@import/layer_function"
330 | },
331 | "lch()": {
332 | "syntax": "lch( [ | | none] [ | | none] [ | none] [ / [ | none] ]? )",
333 | "groups": [
334 | "CSS Color"
335 | ],
336 | "status": "standard",
337 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/color_value/lch"
338 | },
339 | "leader()": {
340 | "syntax": "leader( )",
341 | "groups": [
342 | "CSS Generated Content"
343 | ],
344 | "status": "experimental"
345 | },
346 | "light-dark()": {
347 | "syntax": "light-dark( , )",
348 | "groups": [
349 | "CSS Color"
350 | ],
351 | "status": "standard",
352 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/color_value/light-dark"
353 | },
354 | "linear()": {
355 | "syntax": "linear( [ && {0,2} ]# )",
356 | "groups": [
357 | "CSS Easing Functions"
358 | ],
359 | "status": "standard",
360 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/easing-function/linear"
361 | },
362 | "linear-gradient()": {
363 | "syntax": "linear-gradient( [ ] )",
364 | "groups": [
365 | "CSS Images"
366 | ],
367 | "status": "standard",
368 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/gradient/linear-gradient"
369 | },
370 | "log()": {
371 | "syntax": "log( , ? )",
372 | "groups": [
373 | "CSS Values and Units"
374 | ],
375 | "status": "standard",
376 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/log"
377 | },
378 | "matrix()": {
379 | "syntax": "matrix( #{6} )",
380 | "groups": [
381 | "CSS Transforms"
382 | ],
383 | "status": "standard",
384 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/transform-function/matrix"
385 | },
386 | "matrix3d()": {
387 | "syntax": "matrix3d( #{16} )",
388 | "groups": [
389 | "CSS Transforms"
390 | ],
391 | "status": "standard",
392 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/transform-function/matrix3d"
393 | },
394 | "max()": {
395 | "syntax": "max( # )",
396 | "groups": [
397 | "CSS Values and Units"
398 | ],
399 | "status": "standard",
400 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/max"
401 | },
402 | "min()": {
403 | "syntax": "min( # )",
404 | "groups": [
405 | "CSS Values and Units"
406 | ],
407 | "status": "standard",
408 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/min"
409 | },
410 | "minmax()": {
411 | "syntax": "minmax( [ | min-content | max-content | auto ] , [ | | min-content | max-content | auto ] )",
412 | "groups": [
413 | "CSS Values and Units"
414 | ],
415 | "status": "standard",
416 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/minmax"
417 | },
418 | "mod()": {
419 | "syntax": "mod( , )",
420 | "groups": [
421 | "CSS Values and Units"
422 | ],
423 | "status": "standard",
424 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/mod"
425 | },
426 | "oklab()": {
427 | "syntax": "oklab( [ | | none] [ | | none] [ | | none] [ / [ | none] ]? )",
428 | "groups": [
429 | "CSS Color"
430 | ],
431 | "status": "standard",
432 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/color_value/oklab"
433 | },
434 | "oklch()": {
435 | "syntax": "oklch( [ | | none] [ | | none] [ | none] [ / [ | none] ]? )",
436 | "groups": [
437 | "CSS Color"
438 | ],
439 | "status": "standard",
440 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/color_value/oklch"
441 | },
442 | "opacity()": {
443 | "syntax": "opacity( [ | ]? )",
444 | "groups": [
445 | "Filter Effects"
446 | ],
447 | "status": "standard",
448 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/filter-function/opacity"
449 | },
450 | "paint()": {
451 | "syntax": "paint( , ? )",
452 | "groups": [
453 | "CSS Houdini"
454 | ],
455 | "status": "standard",
456 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/image/paint"
457 | },
458 | "palette-mix()": {
459 | "syntax": "palette-mix( , [ [normal | light | dark | | ] && ? ]#{2})",
460 | "groups": [
461 | "CSS Fonts"
462 | ],
463 | "status": "standard",
464 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/font-palette/palette-mix"
465 | },
466 | "path()": {
467 | "syntax": "path( <'fill-rule'>? , )",
468 | "groups": [
469 | "CSS Shapes"
470 | ],
471 | "status": "standard",
472 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/basic-shape/path"
473 | },
474 | "perspective()": {
475 | "syntax": "perspective( [ | none ] )",
476 | "groups": [
477 | "CSS Transforms"
478 | ],
479 | "status": "standard",
480 | "mdn_url": "https://developer.mozilla.org/docs/Web/CSS/transform-function/perspective"
481 | },
482 | "polygon()": {
483 | "syntax": "polygon( <'fill-rule'>? , [