@melcanz85/chaincss 1.11.2 → 1.11.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -4,25 +4,54 @@
4
4
  [![npm version](https://img.shields.io/npm/v/@melcanz85/chaincss.svg)](https://www.npmjs.com/package/@melcanz85/chaincss)
5
5
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
6
6
 
7
- [![Live Demo](https://img.shields.io/badge/demo-live-brightgreen)](https://melcanz08.github.io/chaincss_react_website/)
7
+ [![Live Demo](https://img.shields.io/badge/demo-live-brightgreen)](https://chaincss.dev)
8
8
 
9
9
  **Write CSS with JavaScript. Lets you CHOOSE your runtime cost. DUAL MODE**
10
10
 
11
- **Build-time compilation** → Pure CSS, zero JavaScript in browser
11
+ * **Build-time compilation** → Pure CSS, zero JavaScript in browser
12
12
 
13
- **Runtime hooks** → Dynamic, prop-based styles when you need them
13
+ * **Runtime hooks** → Dynamic, prop-based styles when you need them
14
14
 
15
- ## Installation
15
+ ### Requirements
16
16
 
17
- * Install [nodejs.](https://nodejs.org/en/download)
17
+ * Node.js 18.x or higher [download.](https://nodejs.org/en/download)
18
+
19
+ * For React: React 16.8+ (hooks support required)
20
+
21
+ ## Installation & Setup
22
+
23
+ ### For Static/Build-time Usage
18
24
 
19
25
  ```bash
20
26
 
21
27
  npm install @melcanz85/chaincss
22
28
  ```
23
29
 
24
- * In your html add a link tag with an href value of style/global.css this serves as the
25
- stylesheet for your entire webpage. You dont need to touch this css file.
30
+ ### For React with Runtime Hooks
31
+
32
+ ```bash
33
+ npm install @melcanz85/chaincss
34
+ # React hooks are included in the main package
35
+ ```
36
+
37
+ ## Quick Start
38
+
39
+ **Syntax**
40
+
41
+ 1. Create your first .jcss file
42
+
43
+ ```javascript
44
+ // main.jcss
45
+ <@
46
+ const text = $().color('blue').textAlign('center').block('p');
47
+
48
+ //text.fontSize = '2rem';
49
+
50
+ run(text);
51
+ @>
52
+ ```
53
+
54
+ 2. Add the stylesheet link to your HTML
26
55
 
27
56
  ```html
28
57
  <!-- index.html -->
@@ -38,32 +67,53 @@ stylesheet for your entire webpage. You dont need to touch this css file.
38
67
  </html>
39
68
  ```
40
69
 
41
- ## Syntax
70
+ 3. Run the compiler
71
+
72
+ ```bash
73
+ npx chaincss ./src/main.jcss ./style --watch
74
+ ```
75
+
76
+ * *Note: The first run creates ./chaincss.config.js with default values. Edit this file to customize your build.*
77
+
78
+ ```javascript
79
+
80
+ module.exports = {
81
+ atomic: {
82
+ enabled: true, // enable this for
83
+ threshold: 3,
84
+ naming: 'hash',
85
+ cache: true,
86
+ cachePath: './.chaincss-cache',
87
+ minify: true
88
+ },
89
+ prefixer: {
90
+ mode: 'auto',
91
+ browsers: ['> 0.5%', 'last 2 versions', 'not dead'],
92
+ enabled: true,
93
+ sourceMap: true,
94
+ sourceMapInline: false
95
+ }
96
+ };
97
+
98
+ ````
99
+
100
+ 4. Open index.html in your browser — your styles should be applied!
101
+
102
+ * To modify or add styles just add a property to the newly created style object before the run() function. They become javascript regular objects.
42
103
 
43
104
  ```javascript
44
105
  // main.jcss
45
106
  <@
46
107
  const text = $().color('blue').textAlign('center').block('p');
47
108
 
48
- //text.fontSize = '2rem';
109
+ text.fontSize = '2rem';
110
+ text.padding = '10px';
111
+ text.backgroundColor = 'rgb(106, 90, 205)';
49
112
 
50
113
  run(text);
51
114
  @>
52
115
  ```
53
116
 
54
- * To apply this styles run this in your terminal / command prompt.
55
-
56
- ```bash
57
- npx chaincss ./src/main.jcss ./style --watch
58
- ````
59
-
60
- * Open your index.html in the browser.
61
-
62
- * To make changes uncomment styles between text variable declaration and run() method.
63
-
64
- * Thats how you add or modify the style block you treat them as a regular javascript object.
65
-
66
-
67
117
  ### File Structure
68
118
 
69
119
  ```text
@@ -104,15 +154,6 @@ stylesheet for your entire webpage. You dont need to touch this css file.
104
154
  compile(button);
105
155
  @>
106
156
  ```
107
- ..then run this in terminal/command prompt
108
-
109
- ```bash
110
- npx chaincss ./src/main.jcss ./style --watch
111
- # ./style/global.css generated!
112
- ````
113
- * Note: running `npx chaincss ./src/main.jcss ./style --watch ` for the first time will
114
- generate ./chaincss.config.js with default values. You can edit this to
115
- customize your build!.
116
157
 
117
158
  ### Mode 2: Runtime (React Hooks)
118
159
 
@@ -176,14 +217,16 @@ stylesheet for your entire webpage. You dont need to touch this css file.
176
217
 
177
218
  ## Use BOTH in the Same Project!
178
219
 
179
- ```jsx
220
+ ```javascript
180
221
  // Best of both worlds:
181
222
  // - Layout styles → Build-time (zero cost)
182
223
  // - Interactive styles → Runtime (dynamic)
183
224
 
184
225
  // chaincss/layout.jcss (build-time)
185
226
  const grid = $().display('grid').gap('1rem').block('.grid');
227
+ ```
186
228
 
229
+ ```jsx
187
230
  // components/Card.jsx (runtime)
188
231
  function Card({ isHighlighted }) {
189
232
  const styles = useChainStyles(() => {
@@ -239,30 +282,6 @@ stylesheet for your entire webpage. You dont need to touch this css file.
239
282
  .block('.btn');
240
283
  ````
241
284
 
242
- ### Basic Example
243
-
244
- **chaincss/button.jcss**
245
-
246
- ```javascript
247
- const button = $()
248
- .backgroundColor('#667eea')
249
- .color('white')
250
- .padding('0.75rem 1.5rem')
251
- .borderRadius('0.375rem')
252
- .fontWeight('600')
253
- .block('.btn');
254
-
255
- module.exports = button;
256
- ```
257
- **chaincss/main.jcss**
258
-
259
- ```javascript
260
- <@
261
- const button = get('./button.jcss');
262
- compile({ button });
263
- @>
264
- ````
265
-
266
285
  ## Advanced Features
267
286
 
268
287
  ### Design Tokens
@@ -283,8 +302,11 @@ stylesheet for your entire webpage. You dont need to touch this css file.
283
302
  lg: '1.5rem'
284
303
  }
285
304
  });
305
+ ```
286
306
 
287
- // In your styles
307
+ **In your styles**
308
+
309
+ ```javascript
288
310
  const button = $()
289
311
  .color('$colors.primary') // ← Token syntax!
290
312
  .padding('$spacing.md')
@@ -307,65 +329,6 @@ stylesheet for your entire webpage. You dont need to touch this css file.
307
329
  **After (atomic CSS):** 499 chars → **90% smaller!**
308
330
 
309
331
 
310
- ## Quick Start Guides
311
-
312
- ### With Node.js (Vanilla)
313
-
314
- ```bash
315
- # 1. Install
316
- npm install @melcanz85/chaincss
317
-
318
- # 2. Create your first .jcss file
319
- mkdir chaincss
320
- echo "const hello = $().color('red').block('.hello');
321
- compile({ hello });" > chaincss/main.jcss
322
-
323
- # 3. Build
324
- npx chaincss ./src/main.jcss ./style --watch & node server.js
325
- # ./style/global.css generated!
326
- ```
327
-
328
- ### With React + Vite
329
-
330
- ```bash
331
- # 1. Create React app
332
- npm create vite@latest my-app -- --template react
333
- cd my-app
334
-
335
- # 2. Install ChainCSS
336
- npm install @melcanz85/chaincss
337
-
338
- # 3. Create component with styles
339
- mkdir -p src/components/Button
340
- ```
341
-
342
- **src/components/Button/Button.jsx**
343
-
344
- ```jsx
345
-
346
- import { useChainStyles } from '@melcanz85/chaincss';
347
-
348
- export function Button({ variant = 'primary', children }) {
349
- const styles = useChainStyles(() => {
350
- const button = $()
351
- .backgroundColor(variant === 'primary' ? '#667eea' : '#48bb78')
352
- .color('white')
353
- .padding('0.5rem 1rem')
354
- .borderRadius('0.375rem')
355
- .hover()
356
- .transform('translateY(-2px)')
357
- .boxShadow('0 4px 6px rgba(0,0,0,0.1)')
358
- .block()
359
- return { button };
360
- });
361
- return <button className={styles.button}>{children}</button>;
362
- }
363
- ```
364
-
365
-
366
- See ChainCSS in action! Visit our interactive demo site - [https://melcanz08.github.io/chaincss_react_website/](https://melcanz08.github.io/chaincss_react_website/)
367
-
368
-
369
332
  ## Performance Comparison
370
333
 
371
334
  Approach Runtime Cost Bundle Size Dynamic Styles Learning Curve
@@ -382,40 +345,42 @@ See ChainCSS in action! Visit our interactive demo site - [https://melcanz08.git
382
345
 
383
346
  CSS Modules Zero Just CSS None Low
384
347
 
385
- **ChainCSS a "DUAL MODE optioned" css-in-js library**
348
+ **ChainCSS a "DUAL MODE" css-in-js library**
349
+
386
350
 
387
351
  ## API Reference
388
352
 
353
+
389
354
  ### Core Functions
390
355
 
391
- Function Description
356
+ Function Description
392
357
 
393
- $() Create a new chain builder
358
+ `$()` Create a new chain builder
394
359
 
395
- .block(selector) End chain and assign selector(s)
360
+ `.block(selector)` End chain and assign selector(s)
396
361
 
397
- compile(styles) Compile style objects to CSS
362
+ `compile(styles)` Compile style objects to CSS
398
363
 
399
- run(...styles) Process inline styles
364
+ `run(...styles)` Process inline styles
400
365
 
401
- get(filename) Import .jcss files
366
+ `get(filename)` Import `.jcss` files
402
367
 
403
- processor(input, output) Build-time processor
368
+ `processor(input, output)` Build-time processor
404
369
 
405
370
 
406
371
  ### React Hooks
407
372
 
408
- Hook Description
373
+ Hook Description
409
374
 
410
- useChainStyles(styles, options) Basic styles hook
375
+ `useChainStyles(styles, options)` Basic styles hook
411
376
 
412
- useDynamicChainStyles(factory, deps) Styles that depend on props/state
377
+ `useDynamicChainStyles(factory, deps)` Styles that depend on props/state
413
378
 
414
- useThemeChainStyles(styles, theme) Theme-aware styles
379
+ `useThemeChainStyles(styles, theme)` Theme-aware styles
415
380
 
416
- ChainCSSGlobal Global styles component
381
+ `ChainCSSGlobal` Global styles component
417
382
 
418
- cx(...classes) Conditional class merging
383
+ `cx(...classes)` Conditional class merging
419
384
 
420
385
 
421
386
  ## Editor Support
@@ -442,6 +407,43 @@ See ChainCSS in action! Visit our interactive demo site - [https://melcanz08.git
442
407
  au BufRead,BufNewFile `*.jcss` setfiletype javascript
443
408
  ```
444
409
 
410
+ ### Troubleshooting
411
+
412
+ **Q: My styles aren't appearing in the browser**
413
+
414
+ * Ensure your HTML includes `<link rel="stylesheet" href="style/global.css">`
415
+
416
+ * Run `npx chaincss` at least once to generate the initial CSS file
417
+
418
+ * Check that your `.jcss` files are in the correct directory
419
+
420
+ * Verify the path in your `npx chaincss` command matches your file structure
421
+
422
+ **Q: React hooks aren't working**
423
+
424
+ * Verify you're using React 16.8 or newer
425
+
426
+ * Import from `@melcanz85/chaincss` (not a subpath)
427
+
428
+ **Q: The `get()` function returns undefined**
429
+
430
+ * Ensure the imported file exports something (`use module.exports = ...`)
431
+
432
+ * Check that the file path is correct relative to your `main.jcss`
433
+
434
+ **Q: Changes aren't reflected after saving**
435
+
436
+ * Make sure the `--watch` flag is active
437
+
438
+ * If not using watch mode, re-run the build command
439
+
440
+ * Clear your browser cache or do a hard refresh
441
+
442
+
443
+ ## See ChainCSS in Action
444
+
445
+ Visit our interactive demo site: [https://www.chaincss.dev/](https://www.chaincss.dev)
446
+
445
447
  ## Contributing
446
448
 
447
449
  Contributions are welcome! Whether it's:
package/browser/rtt.js CHANGED
@@ -2,23 +2,18 @@ import { tokens, createTokens, responsive } from '../shared/tokens.mjs';
2
2
 
3
3
  let cssProperties = [];
4
4
 
5
- // Instead of using dynamic import with unsupported options
6
- // Use a try-catch with proper dynamic import syntax
7
5
  const loadCSSProperties = async () => {
8
6
  try {
9
- // Remove the unsupported 'ignore' option
10
7
  const module = await import('../node/css-properties.json', {
11
8
  assert: { type: 'json' }
12
9
  });
13
10
  return module.default;
14
11
  } catch (e) {
15
- // If the file doesn't exist in the package, fallback to CDN
16
12
  console.log('CSS properties file not found in package, will fetch from CDN');
17
13
  return null;
18
14
  }
19
15
  };
20
16
 
21
- // Initialize asynchronously
22
17
  const chain = {
23
18
  cssOutput: undefined,
24
19
  catcher: {},
@@ -28,21 +23,18 @@ const chain = {
28
23
  return;
29
24
  }
30
25
 
31
- // Try to load from local file first
32
26
  const localProperties = await loadCSSProperties();
33
27
  if (localProperties && localProperties.length > 0) {
34
28
  this.cachedValidProperties = localProperties;
35
29
  return;
36
30
  }
37
31
 
38
- // Fallback to CDN
39
32
  try {
40
33
  console.log('Loading CSS properties from CDN...');
41
34
  const response = await fetch('https://raw.githubusercontent.com/mdn/data/main/css/properties.json');
42
35
  const data = await response.json();
43
36
  const allProperties = Object.keys(data);
44
37
 
45
- // Strip vendor prefixes and remove duplicates
46
38
  const baseProperties = new Set();
47
39
  allProperties.forEach(prop => {
48
40
  const baseProp = prop.replace(/^-(webkit|moz|ms|o)-/, '');
@@ -59,10 +51,8 @@ const chain = {
59
51
  }
60
52
  };
61
53
 
62
- // Start initialization but don't await (non-blocking)
63
54
  chain.initializeProperties();
64
55
 
65
- // Rest of your code remains the same...
66
56
  const resolveToken = (value, useTokens) => {
67
57
  if (!useTokens || typeof value !== 'string' || !value.startsWith('$')) {
68
58
  return value;
@@ -75,37 +65,77 @@ const resolveToken = (value, useTokens) => {
75
65
  return tokenValue;
76
66
  };
77
67
 
78
- function $(useTokens = true){
79
- const catcher = {};
68
+ function $(useTokens = true) {
69
+ const regularStyles = {};
70
+ const hoverStyles = {};
71
+ let isBuildingHover = false;
72
+
80
73
  const validProperties = chain.cachedValidProperties;
81
- const handler = {
82
- get: (target, prop) => {
83
- if (prop === 'block') {
84
- return function(...args) {
85
- if (args.length === 0) {
86
- const result = { ...catcher };
87
- Object.keys(catcher).forEach(key => delete catcher[key]);
74
+
75
+ // Create the main proxy
76
+ const createProxy = () => {
77
+ const handler = {
78
+ get: (target, prop) => {
79
+ // Handle .block()
80
+ if (prop === 'block') {
81
+ return (...args) => {
82
+ const result = { ...regularStyles };
83
+
84
+ // Add hover styles if any exist
85
+ if (Object.keys(hoverStyles).length > 0) {
86
+ result.hover = { ...hoverStyles };
87
+ }
88
+
89
+ if (args.length > 0) {
90
+ result.selectors = args;
91
+ }
92
+
93
+ // Clear for next use
94
+ Object.keys(regularStyles).forEach(key => delete regularStyles[key]);
95
+ Object.keys(hoverStyles).forEach(key => delete hoverStyles[key]);
96
+ isBuildingHover = false;
97
+
88
98
  return result;
89
- }
90
- const result = {
91
- selectors: args,
92
- ...catcher
93
99
  };
94
- Object.keys(catcher).forEach(key => delete catcher[key]);
95
- return result;
100
+ }
101
+
102
+ // Handle .hover()
103
+ if (prop === 'hover') {
104
+ return () => {
105
+ isBuildingHover = true;
106
+ return proxy; // Return the same proxy, just with hover mode on
107
+ };
108
+ }
109
+
110
+ if(prop==='end'){
111
+ return () => {
112
+ isBuildingHover = false;
113
+ return proxy; // Return the same proxy, but end of hover mode
114
+ };
115
+ }
116
+
117
+ // Handle regular CSS properties
118
+ const cssProperty = prop.replace(/([A-Z])/g, '-$1').toLowerCase();
119
+ if (validProperties && validProperties.length > 0 && !validProperties.includes(cssProperty)) {
120
+ console.warn(`Warning: '${cssProperty}' may not be a valid CSS property`);
121
+ }
122
+
123
+ return (value) => {
124
+ console.log(`📦 ${prop} = ${value}, isBuildingHover = ${isBuildingHover}`);
125
+ if (isBuildingHover) {
126
+ hoverStyles[prop] = resolveToken(value, useTokens);
127
+ } else {
128
+ regularStyles[prop] = resolveToken(value, useTokens);
129
+ }
130
+ return proxy;
96
131
  };
97
132
  }
98
- const cssProperty = prop.replace(/([A-Z])/g, '-$1').toLowerCase();
99
- if (validProperties && validProperties.length > 0 && !validProperties.includes(cssProperty)) {
100
- console.warn(`Warning: '${cssProperty}' may not be a valid CSS property`);
101
- }
102
- return function(value) {
103
- catcher[prop] = resolveToken(value, useTokens);
104
- return proxy;
105
- };
106
- }
133
+ };
134
+
135
+ return new Proxy({}, handler);
107
136
  };
108
- const proxy = new Proxy({}, handler);
137
+
138
+ const proxy = createProxy();
109
139
  return proxy;
110
140
  }
111
141
 
@@ -134,14 +164,38 @@ const compile = (obj) => {
134
164
  if (obj.hasOwnProperty(key)) {
135
165
  const element = obj[key];
136
166
  let selectors = element.selectors || [];
137
- let elementCSS = '';
167
+
168
+ // Generate normal styles
169
+ let normalCSS = '';
170
+ let hoverCSS = '';
171
+
138
172
  for (let prop in element) {
139
- if (element.hasOwnProperty(prop) && prop !== 'selectors') {
173
+ if (element.hasOwnProperty(prop) && prop !== 'selectors' && prop !== 'hover') {
140
174
  const kebabKey = prop.replace(/([A-Z])/g, '-$1').toLowerCase();
141
- elementCSS += ` ${kebabKey}: ${element[prop]};\n`;
175
+ normalCSS += ` ${kebabKey}: ${element[prop]};\n`;
142
176
  }
143
177
  }
144
- cssString += `${selectors.join(', ')} {\n${elementCSS}}\n`;
178
+
179
+ // Generate hover styles if present
180
+ if (element.hover && typeof element.hover === 'object') {
181
+ for (let prop in element.hover) {
182
+ if (element.hover.hasOwnProperty(prop)) {
183
+ const kebabKey = prop.replace(/([A-Z])/g, '-$1').toLowerCase();
184
+ hoverCSS += ` ${kebabKey}: ${element.hover[prop]};\n`;
185
+ }
186
+ }
187
+ }
188
+
189
+ // Add normal styles
190
+ if (normalCSS) {
191
+ cssString += `${selectors.join(', ')} {\n${normalCSS}}\n`;
192
+ }
193
+
194
+ // Add hover styles as separate rule
195
+ if (hoverCSS) {
196
+ const hoverSelectors = selectors.map(s => `${s}:hover`);
197
+ cssString += `${hoverSelectors.join(', ')} {\n${hoverCSS}}\n`;
198
+ }
145
199
  }
146
200
  }
147
201
  chain.cssOutput = cssString.trim();
package/node/strVal.js CHANGED
@@ -2,7 +2,7 @@ const strVal = {
2
2
  userConf: `// Project Configuration
3
3
  module.exports = {
4
4
  atomic: {
5
- enabled: false,
5
+ enabled: true,
6
6
  threshold: 3,
7
7
  naming: 'hash',
8
8
  cache: true,
@@ -13,7 +13,7 @@ module.exports = {
13
13
  mode: 'auto',
14
14
  browsers: ['> 0.5%', 'last 2 versions', 'not dead'],
15
15
  enabled: true,
16
- sourceMap: false,
16
+ sourceMap: true,
17
17
  sourceMapInline: false
18
18
  }
19
19
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@melcanz85/chaincss",
3
- "version": "1.11.2",
3
+ "version": "1.11.4",
4
4
  "description": "A simple package transpiler for js to css",
5
5
  "exports": {
6
6
  ".": {
@@ -1,633 +0,0 @@
1
- [
2
- "--*",
3
- "accelerator",
4
- "accent-color",
5
- "align-content",
6
- "align-items",
7
- "align-self",
8
- "align-tracks",
9
- "alignment-baseline",
10
- "all",
11
- "anchor-name",
12
- "anchor-scope",
13
- "animation",
14
- "animation-composition",
15
- "animation-delay",
16
- "animation-direction",
17
- "animation-duration",
18
- "animation-fill-mode",
19
- "animation-iteration-count",
20
- "animation-name",
21
- "animation-play-state",
22
- "animation-range",
23
- "animation-range-end",
24
- "animation-range-start",
25
- "animation-timeline",
26
- "animation-timing-function",
27
- "animation-trigger",
28
- "appearance",
29
- "aspect-ratio",
30
- "backdrop-filter",
31
- "backface-visibility",
32
- "background",
33
- "background-attachment",
34
- "background-blend-mode",
35
- "background-clip",
36
- "background-color",
37
- "background-image",
38
- "background-origin",
39
- "background-position",
40
- "background-position-x",
41
- "background-position-y",
42
- "background-repeat",
43
- "background-size",
44
- "baseline-shift",
45
- "baseline-source",
46
- "binding",
47
- "block-progression",
48
- "block-size",
49
- "border",
50
- "border-before",
51
- "border-before-color",
52
- "border-before-style",
53
- "border-before-width",
54
- "border-block",
55
- "border-block-color",
56
- "border-block-end",
57
- "border-block-end-color",
58
- "border-block-end-style",
59
- "border-block-end-width",
60
- "border-block-start",
61
- "border-block-start-color",
62
- "border-block-start-style",
63
- "border-block-start-width",
64
- "border-block-style",
65
- "border-block-width",
66
- "border-bottom",
67
- "border-bottom-color",
68
- "border-bottom-colors",
69
- "border-bottom-left-radius",
70
- "border-bottom-right-radius",
71
- "border-bottom-style",
72
- "border-bottom-width",
73
- "border-collapse",
74
- "border-color",
75
- "border-end-end-radius",
76
- "border-end-start-radius",
77
- "border-image",
78
- "border-image-outset",
79
- "border-image-repeat",
80
- "border-image-slice",
81
- "border-image-source",
82
- "border-image-width",
83
- "border-inline",
84
- "border-inline-color",
85
- "border-inline-end",
86
- "border-inline-end-color",
87
- "border-inline-end-style",
88
- "border-inline-end-width",
89
- "border-inline-start",
90
- "border-inline-start-color",
91
- "border-inline-start-style",
92
- "border-inline-start-width",
93
- "border-inline-style",
94
- "border-inline-width",
95
- "border-left",
96
- "border-left-color",
97
- "border-left-colors",
98
- "border-left-style",
99
- "border-left-width",
100
- "border-radius",
101
- "border-right",
102
- "border-right-color",
103
- "border-right-colors",
104
- "border-right-style",
105
- "border-right-width",
106
- "border-spacing",
107
- "border-start-end-radius",
108
- "border-start-start-radius",
109
- "border-style",
110
- "border-top",
111
- "border-top-color",
112
- "border-top-colors",
113
- "border-top-left-radius",
114
- "border-top-right-radius",
115
- "border-top-style",
116
- "border-top-width",
117
- "border-width",
118
- "bottom",
119
- "box-align",
120
- "box-decoration-break",
121
- "box-direction",
122
- "box-flex",
123
- "box-flex-group",
124
- "box-lines",
125
- "box-ordinal-group",
126
- "box-orient",
127
- "box-pack",
128
- "box-reflect",
129
- "box-shadow",
130
- "box-sizing",
131
- "break-after",
132
- "break-before",
133
- "break-inside",
134
- "caption-side",
135
- "caret",
136
- "caret-animation",
137
- "caret-color",
138
- "caret-shape",
139
- "clear",
140
- "clip",
141
- "clip-path",
142
- "clip-rule",
143
- "color",
144
- "color-interpolation-filters",
145
- "color-scheme",
146
- "column-count",
147
- "column-fill",
148
- "column-gap",
149
- "column-height",
150
- "column-rule",
151
- "column-rule-color",
152
- "column-rule-style",
153
- "column-rule-width",
154
- "column-span",
155
- "column-width",
156
- "column-wrap",
157
- "columns",
158
- "contain",
159
- "contain-intrinsic-block-size",
160
- "contain-intrinsic-height",
161
- "contain-intrinsic-inline-size",
162
- "contain-intrinsic-size",
163
- "contain-intrinsic-width",
164
- "container",
165
- "container-name",
166
- "container-type",
167
- "content",
168
- "content-visibility",
169
- "content-zoom-chaining",
170
- "content-zoom-limit",
171
- "content-zoom-limit-max",
172
- "content-zoom-limit-min",
173
- "content-zoom-snap",
174
- "content-zoom-snap-points",
175
- "content-zoom-snap-type",
176
- "content-zooming",
177
- "context-properties",
178
- "corner-block-end-shape",
179
- "corner-block-start-shape",
180
- "corner-bottom-left-shape",
181
- "corner-bottom-right-shape",
182
- "corner-bottom-shape",
183
- "corner-end-end-shape",
184
- "corner-end-start-shape",
185
- "corner-inline-end-shape",
186
- "corner-inline-start-shape",
187
- "corner-left-shape",
188
- "corner-right-shape",
189
- "corner-shape",
190
- "corner-start-end-shape",
191
- "corner-start-start-shape",
192
- "corner-top-left-shape",
193
- "corner-top-right-shape",
194
- "corner-top-shape",
195
- "counter-increment",
196
- "counter-reset",
197
- "counter-set",
198
- "cursor",
199
- "cx",
200
- "cy",
201
- "d",
202
- "direction",
203
- "display",
204
- "dominant-baseline",
205
- "dynamic-range-limit",
206
- "empty-cells",
207
- "field-sizing",
208
- "fill",
209
- "fill-opacity",
210
- "fill-rule",
211
- "filter",
212
- "flex",
213
- "flex-basis",
214
- "flex-direction",
215
- "flex-flow",
216
- "flex-grow",
217
- "flex-shrink",
218
- "flex-wrap",
219
- "float",
220
- "float-edge",
221
- "flood-color",
222
- "flood-opacity",
223
- "flow-from",
224
- "flow-into",
225
- "font",
226
- "font-family",
227
- "font-feature-settings",
228
- "font-kerning",
229
- "font-language-override",
230
- "font-optical-sizing",
231
- "font-palette",
232
- "font-size",
233
- "font-size-adjust",
234
- "font-smooth",
235
- "font-stretch",
236
- "font-style",
237
- "font-synthesis",
238
- "font-synthesis-position",
239
- "font-synthesis-small-caps",
240
- "font-synthesis-style",
241
- "font-synthesis-weight",
242
- "font-variant",
243
- "font-variant-alternates",
244
- "font-variant-caps",
245
- "font-variant-east-asian",
246
- "font-variant-emoji",
247
- "font-variant-ligatures",
248
- "font-variant-numeric",
249
- "font-variant-position",
250
- "font-variation-settings",
251
- "font-weight",
252
- "font-width",
253
- "force-broken-image-icon",
254
- "forced-color-adjust",
255
- "gap",
256
- "grid",
257
- "grid-area",
258
- "grid-auto-columns",
259
- "grid-auto-flow",
260
- "grid-auto-rows",
261
- "grid-column",
262
- "grid-column-end",
263
- "grid-column-gap",
264
- "grid-column-start",
265
- "grid-columns",
266
- "grid-gap",
267
- "grid-row",
268
- "grid-row-end",
269
- "grid-row-gap",
270
- "grid-row-start",
271
- "grid-rows",
272
- "grid-template",
273
- "grid-template-areas",
274
- "grid-template-columns",
275
- "grid-template-rows",
276
- "hanging-punctuation",
277
- "height",
278
- "high-contrast-adjust",
279
- "hyphenate-character",
280
- "hyphenate-limit-chars",
281
- "hyphenate-limit-lines",
282
- "hyphenate-limit-zone",
283
- "hyphens",
284
- "image-orientation",
285
- "image-rendering",
286
- "image-resolution",
287
- "ime-align",
288
- "ime-mode",
289
- "initial-letter",
290
- "initial-letter-align",
291
- "inline-size",
292
- "inset",
293
- "inset-block",
294
- "inset-block-end",
295
- "inset-block-start",
296
- "inset-inline",
297
- "inset-inline-end",
298
- "inset-inline-start",
299
- "interactivity",
300
- "interest-delay",
301
- "interest-delay-end",
302
- "interest-delay-start",
303
- "interpolate-size",
304
- "isolation",
305
- "justify-content",
306
- "justify-items",
307
- "justify-self",
308
- "justify-tracks",
309
- "left",
310
- "letter-spacing",
311
- "lighting-color",
312
- "line-break",
313
- "line-clamp",
314
- "line-height",
315
- "line-height-step",
316
- "list-style",
317
- "list-style-image",
318
- "list-style-position",
319
- "list-style-type",
320
- "margin",
321
- "margin-block",
322
- "margin-block-end",
323
- "margin-block-start",
324
- "margin-bottom",
325
- "margin-inline",
326
- "margin-inline-end",
327
- "margin-inline-start",
328
- "margin-left",
329
- "margin-right",
330
- "margin-top",
331
- "margin-trim",
332
- "marker",
333
- "marker-end",
334
- "marker-mid",
335
- "marker-start",
336
- "mask",
337
- "mask-attachment",
338
- "mask-border",
339
- "mask-border-mode",
340
- "mask-border-outset",
341
- "mask-border-repeat",
342
- "mask-border-slice",
343
- "mask-border-source",
344
- "mask-border-width",
345
- "mask-clip",
346
- "mask-composite",
347
- "mask-image",
348
- "mask-mode",
349
- "mask-origin",
350
- "mask-position",
351
- "mask-position-x",
352
- "mask-position-y",
353
- "mask-repeat",
354
- "mask-repeat-x",
355
- "mask-repeat-y",
356
- "mask-size",
357
- "mask-type",
358
- "masonry-auto-flow",
359
- "math-depth",
360
- "math-shift",
361
- "math-style",
362
- "max-block-size",
363
- "max-height",
364
- "max-inline-size",
365
- "max-lines",
366
- "max-width",
367
- "min-block-size",
368
- "min-height",
369
- "min-inline-size",
370
- "min-width",
371
- "mix-blend-mode",
372
- "object-fit",
373
- "object-position",
374
- "object-view-box",
375
- "offset",
376
- "offset-anchor",
377
- "offset-distance",
378
- "offset-path",
379
- "offset-position",
380
- "offset-rotate",
381
- "opacity",
382
- "order",
383
- "orient",
384
- "orphans",
385
- "outline",
386
- "outline-color",
387
- "outline-offset",
388
- "outline-radius",
389
- "outline-radius-bottomleft",
390
- "outline-radius-bottomright",
391
- "outline-radius-topleft",
392
- "outline-radius-topright",
393
- "outline-style",
394
- "outline-width",
395
- "overflow",
396
- "overflow-anchor",
397
- "overflow-block",
398
- "overflow-clip-box",
399
- "overflow-clip-margin",
400
- "overflow-inline",
401
- "overflow-scrolling",
402
- "overflow-style",
403
- "overflow-wrap",
404
- "overflow-x",
405
- "overflow-y",
406
- "overlay",
407
- "overscroll-behavior",
408
- "overscroll-behavior-block",
409
- "overscroll-behavior-inline",
410
- "overscroll-behavior-x",
411
- "overscroll-behavior-y",
412
- "padding",
413
- "padding-block",
414
- "padding-block-end",
415
- "padding-block-start",
416
- "padding-bottom",
417
- "padding-inline",
418
- "padding-inline-end",
419
- "padding-inline-start",
420
- "padding-left",
421
- "padding-right",
422
- "padding-top",
423
- "page",
424
- "page-break-after",
425
- "page-break-before",
426
- "page-break-inside",
427
- "paint-order",
428
- "perspective",
429
- "perspective-origin",
430
- "place-content",
431
- "place-items",
432
- "place-self",
433
- "pointer-events",
434
- "position",
435
- "position-anchor",
436
- "position-area",
437
- "position-try",
438
- "position-try-fallbacks",
439
- "position-try-order",
440
- "position-visibility",
441
- "print-color-adjust",
442
- "quotes",
443
- "r",
444
- "reading-flow",
445
- "reading-order",
446
- "resize",
447
- "right",
448
- "rotate",
449
- "row-gap",
450
- "ruby-align",
451
- "ruby-merge",
452
- "ruby-overhang",
453
- "ruby-position",
454
- "rx",
455
- "ry",
456
- "scale",
457
- "scroll-behavior",
458
- "scroll-chaining",
459
- "scroll-initial-target",
460
- "scroll-limit",
461
- "scroll-limit-x-max",
462
- "scroll-limit-x-min",
463
- "scroll-limit-y-max",
464
- "scroll-limit-y-min",
465
- "scroll-margin",
466
- "scroll-margin-block",
467
- "scroll-margin-block-end",
468
- "scroll-margin-block-start",
469
- "scroll-margin-bottom",
470
- "scroll-margin-inline",
471
- "scroll-margin-inline-end",
472
- "scroll-margin-inline-start",
473
- "scroll-margin-left",
474
- "scroll-margin-right",
475
- "scroll-margin-top",
476
- "scroll-marker-group",
477
- "scroll-padding",
478
- "scroll-padding-block",
479
- "scroll-padding-block-end",
480
- "scroll-padding-block-start",
481
- "scroll-padding-bottom",
482
- "scroll-padding-inline",
483
- "scroll-padding-inline-end",
484
- "scroll-padding-inline-start",
485
- "scroll-padding-left",
486
- "scroll-padding-right",
487
- "scroll-padding-top",
488
- "scroll-rails",
489
- "scroll-snap-align",
490
- "scroll-snap-coordinate",
491
- "scroll-snap-destination",
492
- "scroll-snap-points-x",
493
- "scroll-snap-points-y",
494
- "scroll-snap-stop",
495
- "scroll-snap-type",
496
- "scroll-snap-type-x",
497
- "scroll-snap-type-y",
498
- "scroll-snap-x",
499
- "scroll-snap-y",
500
- "scroll-target-group",
501
- "scroll-timeline",
502
- "scroll-timeline-axis",
503
- "scroll-timeline-name",
504
- "scroll-translation",
505
- "scrollbar-3dlight-color",
506
- "scrollbar-arrow-color",
507
- "scrollbar-base-color",
508
- "scrollbar-color",
509
- "scrollbar-darkshadow-color",
510
- "scrollbar-face-color",
511
- "scrollbar-gutter",
512
- "scrollbar-highlight-color",
513
- "scrollbar-shadow-color",
514
- "scrollbar-track-color",
515
- "scrollbar-width",
516
- "shape-image-threshold",
517
- "shape-margin",
518
- "shape-outside",
519
- "shape-rendering",
520
- "speak-as",
521
- "stack-sizing",
522
- "stop-color",
523
- "stop-opacity",
524
- "stroke",
525
- "stroke-color",
526
- "stroke-dasharray",
527
- "stroke-dashoffset",
528
- "stroke-linecap",
529
- "stroke-linejoin",
530
- "stroke-miterlimit",
531
- "stroke-opacity",
532
- "stroke-width",
533
- "tab-size",
534
- "table-layout",
535
- "tap-highlight-color",
536
- "text-align",
537
- "text-align-last",
538
- "text-anchor",
539
- "text-autospace",
540
- "text-blink",
541
- "text-box",
542
- "text-box-edge",
543
- "text-box-trim",
544
- "text-combine-upright",
545
- "text-decoration",
546
- "text-decoration-color",
547
- "text-decoration-inset",
548
- "text-decoration-line",
549
- "text-decoration-skip",
550
- "text-decoration-skip-ink",
551
- "text-decoration-style",
552
- "text-decoration-thickness",
553
- "text-emphasis",
554
- "text-emphasis-color",
555
- "text-emphasis-position",
556
- "text-emphasis-style",
557
- "text-fill-color",
558
- "text-indent",
559
- "text-justify",
560
- "text-orientation",
561
- "text-overflow",
562
- "text-rendering",
563
- "text-shadow",
564
- "text-size-adjust",
565
- "text-spacing-trim",
566
- "text-stroke",
567
- "text-stroke-color",
568
- "text-stroke-width",
569
- "text-transform",
570
- "text-underline-offset",
571
- "text-underline-position",
572
- "text-wrap",
573
- "text-wrap-mode",
574
- "text-wrap-style",
575
- "timeline-scope",
576
- "timeline-trigger",
577
- "timeline-trigger-activation-range",
578
- "timeline-trigger-activation-range-end",
579
- "timeline-trigger-activation-range-start",
580
- "timeline-trigger-active-range",
581
- "timeline-trigger-active-range-end",
582
- "timeline-trigger-active-range-start",
583
- "timeline-trigger-name",
584
- "timeline-trigger-source",
585
- "top",
586
- "touch-action",
587
- "touch-callout",
588
- "touch-select",
589
- "transform",
590
- "transform-box",
591
- "transform-origin",
592
- "transform-style",
593
- "transition",
594
- "transition-behavior",
595
- "transition-delay",
596
- "transition-duration",
597
- "transition-property",
598
- "transition-timing-function",
599
- "translate",
600
- "trigger-scope",
601
- "unicode-bidi",
602
- "user-focus",
603
- "user-input",
604
- "user-modify",
605
- "user-select",
606
- "vector-effect",
607
- "vertical-align",
608
- "view-timeline",
609
- "view-timeline-axis",
610
- "view-timeline-inset",
611
- "view-timeline-name",
612
- "view-transition-class",
613
- "view-transition-name",
614
- "visibility",
615
- "white-space",
616
- "white-space-collapse",
617
- "widows",
618
- "width",
619
- "will-change",
620
- "window-dragging",
621
- "window-shadow",
622
- "word-break",
623
- "word-spacing",
624
- "word-wrap",
625
- "wrap-flow",
626
- "wrap-margin",
627
- "wrap-through",
628
- "writing-mode",
629
- "x",
630
- "y",
631
- "z-index",
632
- "zoom"
633
- ]