chaincss 1.13.2 → 2.0.0

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.
Files changed (101) hide show
  1. package/CHANGELOG.md +81 -0
  2. package/LICENSE +2 -3
  3. package/README.md +239 -114
  4. package/dist/cli/commands/build.d.ts +3 -0
  5. package/dist/cli/commands/build.d.ts.map +1 -0
  6. package/dist/cli/commands/compile.d.ts +3 -0
  7. package/dist/cli/commands/compile.d.ts.map +1 -0
  8. package/dist/cli/commands/init.d.ts +5 -0
  9. package/dist/cli/commands/init.d.ts.map +1 -0
  10. package/dist/cli/commands/timeline.d.ts +2 -0
  11. package/dist/cli/commands/timeline.d.ts.map +1 -0
  12. package/dist/cli/commands/watch.d.ts +6 -0
  13. package/dist/cli/commands/watch.d.ts.map +1 -0
  14. package/dist/cli/index.d.ts +2 -0
  15. package/dist/cli/index.d.ts.map +1 -0
  16. package/dist/cli/index.js +5960 -0
  17. package/dist/cli/types.d.ts +51 -0
  18. package/dist/cli/types.d.ts.map +1 -0
  19. package/dist/cli/utils/config-loader.d.ts +8 -0
  20. package/dist/cli/utils/config-loader.d.ts.map +1 -0
  21. package/dist/cli/utils/file-utils.d.ts +9 -0
  22. package/dist/cli/utils/file-utils.d.ts.map +1 -0
  23. package/dist/cli/utils/logger.d.ts +17 -0
  24. package/dist/cli/utils/logger.d.ts.map +1 -0
  25. package/dist/compiler/atomic-optimizer.d.ts +76 -0
  26. package/dist/compiler/atomic-optimizer.d.ts.map +1 -0
  27. package/dist/compiler/btt.d.ts +138 -0
  28. package/dist/compiler/btt.d.ts.map +1 -0
  29. package/dist/compiler/cache-manager.d.ts +20 -0
  30. package/dist/compiler/cache-manager.d.ts.map +1 -0
  31. package/dist/compiler/commonProps.d.ts +2 -0
  32. package/dist/compiler/commonProps.d.ts.map +1 -0
  33. package/dist/compiler/index.d.ts +12 -0
  34. package/dist/compiler/index.d.ts.map +1 -0
  35. package/dist/compiler/index.js +5177 -0
  36. package/dist/compiler/prefixer.d.ts +42 -0
  37. package/dist/compiler/prefixer.d.ts.map +1 -0
  38. package/dist/compiler/theme-contract.d.ts +61 -0
  39. package/dist/compiler/theme-contract.d.ts.map +1 -0
  40. package/dist/compiler/tokens.d.ts +52 -0
  41. package/dist/compiler/tokens.d.ts.map +1 -0
  42. package/dist/compiler/types.d.ts +57 -0
  43. package/dist/compiler/types.d.ts.map +1 -0
  44. package/dist/core/compiler.d.ts +32 -0
  45. package/dist/core/compiler.d.ts.map +1 -0
  46. package/dist/core/constants.d.ts +129 -0
  47. package/dist/core/constants.d.ts.map +1 -0
  48. package/dist/core/index.d.ts +4 -0
  49. package/dist/core/index.d.ts.map +1 -0
  50. package/dist/core/types.d.ts +88 -0
  51. package/dist/core/types.d.ts.map +1 -0
  52. package/dist/core/utils.d.ts +37 -0
  53. package/dist/core/utils.d.ts.map +1 -0
  54. package/dist/index.d.ts +13 -0
  55. package/dist/index.d.ts.map +1 -0
  56. package/dist/index.js +5667 -0
  57. package/dist/plugins/vite.d.ts +11 -0
  58. package/dist/plugins/vite.d.ts.map +1 -0
  59. package/dist/plugins/vite.js +25839 -0
  60. package/dist/plugins/webpack.d.ts +45 -0
  61. package/dist/plugins/webpack.d.ts.map +1 -0
  62. package/dist/plugins/webpack.js +107 -0
  63. package/dist/runtime/hmr.d.ts +3 -0
  64. package/dist/runtime/hmr.d.ts.map +1 -0
  65. package/dist/runtime/index.d.ts +15 -0
  66. package/dist/runtime/index.d.ts.map +1 -0
  67. package/dist/runtime/index.js +552 -0
  68. package/dist/runtime/injector.d.ts +85 -0
  69. package/dist/runtime/injector.d.ts.map +1 -0
  70. package/dist/runtime/react.d.ts +54 -0
  71. package/dist/runtime/react.d.ts.map +1 -0
  72. package/dist/runtime/react.js +270 -0
  73. package/dist/runtime/types.d.ts +45 -0
  74. package/dist/runtime/types.d.ts.map +1 -0
  75. package/dist/runtime/utils.d.ts +62 -0
  76. package/dist/runtime/utils.d.ts.map +1 -0
  77. package/dist/runtime/vue.d.ts +52 -0
  78. package/dist/runtime/vue.d.ts.map +1 -0
  79. package/dist/runtime/vue.js +232 -0
  80. package/package.json +90 -109
  81. package/browser/commonProps.js +0 -14
  82. package/browser/index.js +0 -3
  83. package/browser/react-hooks.js +0 -162
  84. package/browser/rtt.js +0 -370
  85. package/node/atomic-optimizer.js +0 -391
  86. package/node/btt.js +0 -962
  87. package/node/cache-manager.js +0 -56
  88. package/node/chaincss.js +0 -489
  89. package/node/css-properties.json +0 -633
  90. package/node/index.js +0 -2
  91. package/node/loaders/chaincss-loader.js +0 -62
  92. package/node/plugins/next-plugin.js +0 -120
  93. package/node/plugins/vite-plugin.js +0 -383
  94. package/node/plugins/webpack-plugin.js +0 -41
  95. package/node/prefixer.js +0 -237
  96. package/node/strVal.js +0 -106
  97. package/node/theme-validator.js +0 -32
  98. package/shared/theme-contract.js +0 -98
  99. package/shared/tokens.cjs +0 -256
  100. package/shared/tokens.mjs +0 -320
  101. package/types.d.ts +0 -277
package/package.json CHANGED
@@ -1,7 +1,91 @@
1
1
  {
2
2
  "name": "chaincss",
3
- "version": "1.13.2",
4
- "description": "Chainable CSS-in-JS with build-time compilation, atomic CSS, and zero-runtime options",
3
+ "version": "2.0.0",
4
+ "description": "The JavaScript-native styling engine for the modern web",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "files": [
9
+ "dist",
10
+ "README.md",
11
+ "LICENSE",
12
+ "CHANGELOG.md"
13
+ ],
14
+ "bin": {
15
+ "chaincss": "./dist/cli/index.js"
16
+ },
17
+ "exports": {
18
+ ".": {
19
+ "import": "./dist/index.js",
20
+ "types": "./dist/index.d.ts"
21
+ },
22
+ "./compiler": {
23
+ "import": "./dist/compiler/index.js",
24
+ "types": "./dist/compiler/index.d.ts"
25
+ },
26
+ "./runtime": {
27
+ "import": "./dist/runtime/index.js",
28
+ "types": "./dist/runtime/index.d.ts",
29
+ "development": "./dist/runtime/index.js"
30
+ },
31
+ "./plugin/vite": {
32
+ "import": "./dist/plugins/vite.js",
33
+ "types": "./dist/plugins/vite.d.ts"
34
+ },
35
+ "./plugin/webpack": {
36
+ "import": "./dist/plugins/webpack.js",
37
+ "types": "./dist/plugins/webpack.d.ts"
38
+ }
39
+ },
40
+ "scripts": {
41
+ "build": "npm run build:clean && npm run build:types && npm run build:core && npm run build:cli && npm run build:plugins && npm run build:runtime && npm run build:compiler",
42
+ "build:clean": "rm -rf dist",
43
+ "build:types": "tsc --emitDeclarationOnly --outDir dist",
44
+ "build:core": "esbuild src/index.ts --bundle --platform=node --format=esm --outfile=dist/index.js --external:chokidar --external:glob --external:commander --external:chalk --external:autoprefixer --external:postcss --external:clean-css",
45
+ "build:cli": "esbuild src/cli/index.ts --bundle --platform=node --format=esm --outfile=dist/cli/index.js --external:chokidar --external:glob --external:commander --external:chalk --external:autoprefixer --external:postcss --external:clean-css && chmod +x dist/cli/index.js",
46
+ "build:plugins": "esbuild src/plugins/vite.ts --bundle --platform=node --format=esm --outfile=dist/plugins/vite.js --external:vite && esbuild src/plugins/webpack.ts --bundle --platform=node --format=esm --outfile=dist/plugins/webpack.js --external:webpack",
47
+ "build:runtime": "esbuild src/runtime/index.ts --bundle --platform=browser --format=esm --outfile=dist/runtime/index.js --external:react --external:vue && esbuild src/runtime/react.tsx --bundle --platform=browser --format=esm --outfile=dist/runtime/react.js --external:react --external:vue && esbuild src/runtime/vue.ts --bundle --platform=browser --format=esm --outfile=dist/runtime/vue.js --external:vue --external:react",
48
+ "build:compiler": "esbuild src/compiler/index.ts --bundle --platform=node --format=esm --outfile=dist/compiler/index.js --external:chokidar --external:glob --external:commander --external:chalk --external:autoprefixer --external:postcss --external:clean-css",
49
+ "dev": "npm run build:clean && npm run build:types && npm run build:core -- --watch",
50
+ "prepublishOnly": "npm run build",
51
+ "test": "vitest",
52
+ "lint": "eslint src --ext .ts,.tsx",
53
+ "preversion": "npm run test && npm run build",
54
+ "version": "git add -A",
55
+ "postversion": "git push && git push --tags"
56
+ },
57
+ "dependencies": {
58
+ "chalk": "^5.3.0",
59
+ "chokidar": "^3.5.3",
60
+ "clean-css": "^5.3.2",
61
+ "commander": "^11.1.0",
62
+ "postcss": "^8.4.31"
63
+ },
64
+ "devDependencies": {
65
+ "@types/clean-css": "^4.2.10",
66
+ "@types/node": "^20.8.10",
67
+ "@types/react": "^18.2.0",
68
+ "autoprefixer": "^10.4.16",
69
+ "browserslist": "^4.22.1",
70
+ "esbuild": "^0.19.12",
71
+ "glob": "^10.3.10",
72
+ "react": "^18.2.0",
73
+ "typescript": "^5.2.2",
74
+ "vite": "^5.0.0",
75
+ "vue": "^3.3.4"
76
+ },
77
+ "peerDependencies": {
78
+ "react": "^18.0.0",
79
+ "vue": "^3.0.0"
80
+ },
81
+ "peerDependenciesMeta": {
82
+ "react": {
83
+ "optional": true
84
+ },
85
+ "vue": {
86
+ "optional": true
87
+ }
88
+ },
5
89
  "keywords": [
6
90
  "css",
7
91
  "css-in-js",
@@ -34,117 +118,14 @@
34
118
  "license": "MIT",
35
119
  "repository": {
36
120
  "type": "git",
37
- "url": "git+https://github.com/melcanz08/chaincss.git"
121
+ "url": "https://github.com/melcanz08/chaincss"
38
122
  },
39
123
  "homepage": "https://chaincss.dev",
40
124
  "bugs": {
41
125
  "url": "https://github.com/melcanz08/chaincss/issues"
42
126
  },
43
- "exports": {
44
- ".": {
45
- "types": "./types.d.ts",
46
- "browser": {
47
- "import": "./browser/index.js",
48
- "require": "./browser/index.js"
49
- },
50
- "node": {
51
- "import": "./node/btt.js",
52
- "require": "./node/btt.js"
53
- },
54
- "default": "./browser/index.js"
55
- },
56
- "./react": {
57
- "types": "./types.d.ts",
58
- "browser": {
59
- "import": "./browser/react-hooks.js",
60
- "require": "./browser/react-hooks.js"
61
- },
62
- "default": "./browser/react-hooks.js"
63
- },
64
- "./browser/*": {
65
- "browser": {
66
- "import": "./browser/*",
67
- "require": "./browser/*"
68
- }
69
- },
70
- "./node/*": {
71
- "node": {
72
- "import": "./node/*",
73
- "require": "./node/*"
74
- }
75
- },
76
- "./vite-plugin": {
77
- "types": "./types.d.ts",
78
- "import": "./node/plugins/vite-plugin.js",
79
- "require": "./node/plugins/vite-plugin.js",
80
- "default": "./node/plugins/vite-plugin.js"
81
- },
82
- "./webpack-plugin": {
83
- "types": "./types.d.ts",
84
- "import": "./node/plugins/webpack-plugin.js",
85
- "require": "./node/plugins/webpack-plugin.js",
86
- "default": "./node/plugins/webpack-plugin.js"
87
- },
88
- "./next-plugin": {
89
- "types": "./types.d.ts",
90
- "import": "./node/plugins/next-plugin.js",
91
- "require": "./node/plugins/next-plugin.js",
92
- "default": "./node/plugins/next-plugin.js"
93
- },
94
- "./loader": {
95
- "types": "./types.d.ts",
96
- "import": "./node/loaders/chaincss-loader.js",
97
- "require": "./node/loaders/chaincss-loader.js",
98
- "default": "./node/loaders/chaincss-loader.js"
99
- }
100
- },
101
- "types": "types.d.ts",
102
- "files": [
103
- "browser/",
104
- "node/",
105
- "shared/",
106
- "types.d.ts",
107
- "README.md",
108
- "LICENSE"
109
- ],
110
- "publishConfig": {
111
- "access": "public",
112
- "registry": "https://registry.npmjs.org/",
113
- "provenance": false
114
- },
115
- "bin": {
116
- "chaincss": "./node/chaincss.js"
117
- },
118
- "dependencies": {
119
- "chokidar": "^3.5.3",
120
- "clean-css": "^5.3.3"
121
- },
122
- "peerDependencies": {
123
- "react": ">=16.8.0",
124
- "autoprefixer": "^10.0.0",
125
- "postcss": "^8.5.6",
126
- "browserslist": "^4.28.1",
127
- "caniuse-db": "^1.0.30001770"
128
- },
129
- "peerDependenciesMeta": {
130
- "react": {
131
- "optional": true
132
- },
133
- "autoprefixer": {
134
- "optional": true
135
- },
136
- "postcss": {
137
- "optional": true
138
- },
139
- "browserslist": {
140
- "optional": true
141
- },
142
- "caniuse-db": {
143
- "optional": true
144
- }
145
- },
127
+ "sideEffects": false,
146
128
  "engines": {
147
- "node": ">=14.0.0"
148
- },
149
- "sideEffects": false
129
+ "node": ">=18.0.0"
130
+ }
150
131
  }
@@ -1,14 +0,0 @@
1
- export const COMMON_CSS_PROPERTIES = [
2
- 'color', 'background', 'background-color', 'background-image', 'background-size',
3
- 'margin', 'margin-top', 'margin-right', 'margin-bottom', 'margin-left',
4
- 'padding', 'padding-top', 'padding-right', 'padding-bottom', 'padding-left',
5
- 'border', 'border-radius', 'border-width', 'border-style', 'border-color',
6
- 'display', 'position', 'top', 'left', 'right', 'bottom',
7
- 'width', 'height', 'max-width', 'min-width', 'max-height', 'min-height',
8
- 'font-size', 'font-weight', 'font-family', 'font-style', 'line-height',
9
- 'text-align', 'text-decoration', 'text-transform', 'letter-spacing',
10
- 'opacity', 'z-index', 'overflow', 'cursor', 'pointer-events',
11
- 'transition', 'transform', 'animation', 'animation-duration', 'animation-timing-function',
12
- 'flex', 'grid', 'gap', 'justify-content', 'align-items', 'flex-direction',
13
- 'box-shadow', 'outline', 'filter', 'backdrop-filter'
14
- ]
package/browser/index.js DELETED
@@ -1,3 +0,0 @@
1
- // ChainCSS Browser Entry Point
2
- export { $, run, compile, chain, createTokens, responsive, tokens } from './rtt.js';
3
- export { useChainStyles, useDynamicChainStyles, useThemeChainStyles, ChainCSSGlobal, withChainStyles, cx } from './react-hooks.js';
@@ -1,162 +0,0 @@
1
- import React from 'react';
2
- const { useMemo, useEffect, useRef, useState } = React;
3
- import { $, compile, chain } from './rtt';
4
-
5
- const styleCache = new Map();
6
- let styleSheet = null;
7
-
8
- const initStyleSheet = () => {
9
- if (typeof document === 'undefined') return null;
10
- if (!styleSheet) {
11
- const existing = document.getElementById('chaincss-styles');
12
- if (existing) {
13
- styleSheet = existing;
14
- return styleSheet;
15
- }
16
- const style = document.createElement('style');
17
- style.id = 'chaincss-styles';
18
- style.setAttribute('data-chaincss', 'true');
19
- document.head.appendChild(style);
20
- styleSheet = style;
21
- }
22
- return styleSheet;
23
- };
24
-
25
- const updateStyles = (css) => {
26
- const sheet = initStyleSheet();
27
- if (sheet) {
28
- sheet.textContent = css;
29
- }
30
- };
31
-
32
- export function useChainStyles(styles, deps = [], options = {}) {
33
- const {
34
- cache = true,
35
- namespace = 'chain',
36
- watch = false
37
- } = options;
38
-
39
- const id = useRef(`chain-${Math.random().toString(36).substr(2, 9)}`);
40
- const [classNames, setClassNames] = useState({});
41
-
42
- const processed = useMemo(() => {
43
- const resolvedStyles = typeof styles === 'function' ? styles() : styles;
44
- if (!resolvedStyles || Object.keys(resolvedStyles).length === 0) {
45
- return { classNames: {}, css: '' };
46
- }
47
-
48
- const cacheKey = JSON.stringify(resolvedStyles);
49
- if (cache && styleCache.has(cacheKey)) {
50
- return styleCache.get(cacheKey);
51
- }
52
-
53
- const newClassNames = {};
54
- const compiledStyles = {};
55
-
56
- Object.entries(resolvedStyles).forEach(([key, styleDef]) => {
57
- const className = `${namespace}-${key}-${id.current}`;
58
- const styleObj = typeof styleDef === 'function'
59
- ? styleDef()
60
- : styleDef;
61
- newClassNames[key] = className;
62
- compiledStyles[`${key}_${id.current}`] = {
63
- selectors: [`.${className}`],
64
- ...styleObj
65
- };
66
- });
67
-
68
- compile(compiledStyles);
69
- const css = chain.cssOutput;
70
- const result = { classNames: newClassNames, css };
71
-
72
- if (cache) {
73
- styleCache.set(cacheKey, result);
74
- }
75
- return result;
76
- }, [styles, namespace, id.current, ...deps]);
77
-
78
- useEffect(() => {
79
- if (processed.css) {
80
- if (!watch) {
81
- const sheet = initStyleSheet();
82
- if (sheet) {
83
- const existingStyles = sheet.textContent || '';
84
- const styleRegex = new RegExp(`\\.[\\w-]*${id.current}[\\s\\S]*?}`, 'g');
85
- const cleanedStyles = existingStyles.replace(styleRegex, '');
86
- sheet.textContent = cleanedStyles + processed.css;
87
- }
88
- } else {
89
- updateStyles(processed.css);
90
- }
91
- }
92
-
93
- return () => {
94
- if (!watch && styleSheet) {
95
- const existingStyles = styleSheet.textContent || '';
96
- const styleRegex = new RegExp(`\\.[\\w-]*${id.current}[\\s\\S]*?}`, 'g');
97
- styleSheet.textContent = existingStyles.replace(styleRegex, '');
98
- }
99
- };
100
- }, [processed.css, watch]);
101
-
102
- return processed.classNames;
103
- }
104
-
105
- export function useDynamicChainStyles(styleFactory, deps = [], options = {}) {
106
- const styles = useMemo(() => {
107
- return styleFactory();
108
- }, deps);
109
- return useChainStyles(styles, options);
110
- }
111
-
112
- export function useThemeChainStyles(styles, theme, options = {}) {
113
- const themedStyles = useMemo(() => {
114
- if (typeof styles === 'function') {
115
- return styles(theme);
116
- }
117
- return styles;
118
- }, [styles, theme]);
119
- return useChainStyles(themedStyles, options);
120
- }
121
-
122
- export function ChainCSSGlobal({ styles }) {
123
- useChainStyles(styles, { watch: true });
124
- return null;
125
- }
126
-
127
- export function withChainStyles(styles, options = {}) {
128
- return function WrappedComponent(props) {
129
- const classNames = useChainStyles(
130
- typeof styles === 'function' ? styles(props) : styles,
131
- options
132
- );
133
- return React.createElement(WrappedComponent, { ...props, chainStyles: classNames });
134
- };
135
- }
136
-
137
- export function cx(...classes) {
138
- return classes.filter(Boolean).join(' ');
139
- }
140
-
141
- let debugEnabled = false;
142
-
143
- export function enableChainCSSDebug() {
144
- if (typeof window !== 'undefined') {
145
- debugEnabled = true;
146
- window.__CHAINCSS_DEBUG__ = true;
147
- console.log('🔍 ChainCSS Debug Mode Enabled');
148
- console.log('💡 Tip: Hover over elements to see their atomic classes');
149
- }
150
- }
151
-
152
- export function disableChainCSSDebug() {
153
- if (typeof window !== 'undefined') {
154
- debugEnabled = false;
155
- window.__CHAINCSS_DEBUG__ = false;
156
- console.log('🔍 ChainCSS Debug Mode Disabled');
157
- }
158
- }
159
-
160
- export function isDebugEnabled() {
161
- return debugEnabled || (typeof window !== 'undefined' && window.__CHAINCSS_DEBUG__);
162
- }