tailwindcss 0.0.0-insiders.ff2c25f → 0.0.0-internal.6835ef85

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 (248) hide show
  1. package/README.md +5 -6
  2. package/dist/lib.d.mts +326 -0
  3. package/dist/lib.d.ts +326 -0
  4. package/dist/lib.js +17 -0
  5. package/dist/lib.mjs +17 -0
  6. package/index.css +5 -0
  7. package/package.json +36 -107
  8. package/preflight.css +355 -0
  9. package/theme.css +465 -0
  10. package/base.css +0 -1
  11. package/colors.d.ts +0 -3
  12. package/colors.js +0 -2
  13. package/components.css +0 -1
  14. package/defaultConfig.d.ts +0 -3
  15. package/defaultConfig.js +0 -2
  16. package/defaultTheme.d.ts +0 -4
  17. package/defaultTheme.js +0 -2
  18. package/lib/cli/build/deps.js +0 -54
  19. package/lib/cli/build/index.js +0 -48
  20. package/lib/cli/build/plugin.js +0 -367
  21. package/lib/cli/build/utils.js +0 -78
  22. package/lib/cli/build/watching.js +0 -178
  23. package/lib/cli/help/index.js +0 -71
  24. package/lib/cli/index.js +0 -239
  25. package/lib/cli/init/index.js +0 -46
  26. package/lib/cli-peer-dependencies.js +0 -28
  27. package/lib/cli.js +0 -7
  28. package/lib/constants.js +0 -44
  29. package/lib/corePluginList.js +0 -181
  30. package/lib/corePlugins.js +0 -4062
  31. package/lib/css/LICENSE +0 -25
  32. package/lib/css/preflight.css +0 -367
  33. package/lib/featureFlags.js +0 -71
  34. package/lib/index.js +0 -6
  35. package/lib/lib/cacheInvalidation.js +0 -90
  36. package/lib/lib/collapseAdjacentRules.js +0 -59
  37. package/lib/lib/collapseDuplicateDeclarations.js +0 -83
  38. package/lib/lib/content.js +0 -177
  39. package/lib/lib/defaultExtractor.js +0 -241
  40. package/lib/lib/detectNesting.js +0 -43
  41. package/lib/lib/evaluateTailwindFunctions.js +0 -234
  42. package/lib/lib/expandApplyAtRules.js +0 -526
  43. package/lib/lib/expandTailwindAtRules.js +0 -273
  44. package/lib/lib/findAtConfigPath.js +0 -44
  45. package/lib/lib/generateRules.js +0 -866
  46. package/lib/lib/getModuleDependencies.js +0 -51
  47. package/lib/lib/normalizeTailwindDirectives.js +0 -87
  48. package/lib/lib/offsets.js +0 -299
  49. package/lib/lib/partitionApplyAtRules.js +0 -56
  50. package/lib/lib/regex.js +0 -60
  51. package/lib/lib/remap-bitfield.js +0 -87
  52. package/lib/lib/resolveDefaultsAtRules.js +0 -161
  53. package/lib/lib/setupContextUtils.js +0 -1218
  54. package/lib/lib/setupTrackingContext.js +0 -163
  55. package/lib/lib/sharedState.js +0 -78
  56. package/lib/lib/substituteScreenAtRules.js +0 -29
  57. package/lib/oxide/cli/build/deps.js +0 -81
  58. package/lib/oxide/cli/build/index.js +0 -47
  59. package/lib/oxide/cli/build/plugin.js +0 -364
  60. package/lib/oxide/cli/build/utils.js +0 -77
  61. package/lib/oxide/cli/build/watching.js +0 -177
  62. package/lib/oxide/cli/help/index.js +0 -70
  63. package/lib/oxide/cli/index.js +0 -220
  64. package/lib/oxide/cli/init/index.js +0 -35
  65. package/lib/oxide/cli.js +0 -5
  66. package/lib/oxide/postcss-plugin.js +0 -2
  67. package/lib/plugin.js +0 -48
  68. package/lib/postcss-plugins/nesting/README.md +0 -42
  69. package/lib/postcss-plugins/nesting/index.js +0 -19
  70. package/lib/postcss-plugins/nesting/plugin.js +0 -87
  71. package/lib/processTailwindFeatures.js +0 -62
  72. package/lib/public/colors.js +0 -331
  73. package/lib/public/create-plugin.js +0 -15
  74. package/lib/public/default-config.js +0 -16
  75. package/lib/public/default-theme.js +0 -16
  76. package/lib/public/resolve-config.js +0 -22
  77. package/lib/util/bigSign.js +0 -11
  78. package/lib/util/buildMediaQuery.js +0 -25
  79. package/lib/util/cloneDeep.js +0 -20
  80. package/lib/util/cloneNodes.js +0 -32
  81. package/lib/util/color.js +0 -98
  82. package/lib/util/configurePlugins.js +0 -21
  83. package/lib/util/createPlugin.js +0 -30
  84. package/lib/util/createUtilityPlugin.js +0 -51
  85. package/lib/util/dataTypes.js +0 -266
  86. package/lib/util/defaults.js +0 -25
  87. package/lib/util/escapeClassName.js +0 -22
  88. package/lib/util/escapeCommas.js +0 -11
  89. package/lib/util/flattenColorPalette.js +0 -16
  90. package/lib/util/formatVariantSelector.js +0 -351
  91. package/lib/util/getAllConfigs.js +0 -48
  92. package/lib/util/hashConfig.js +0 -19
  93. package/lib/util/isKeyframeRule.js +0 -11
  94. package/lib/util/isPlainObject.js +0 -15
  95. package/lib/util/isSyntacticallyValidPropertyValue.js +0 -72
  96. package/lib/util/log.js +0 -57
  97. package/lib/util/nameClass.js +0 -43
  98. package/lib/util/negateValue.js +0 -34
  99. package/lib/util/normalizeConfig.js +0 -281
  100. package/lib/util/normalizeScreens.js +0 -170
  101. package/lib/util/parseAnimationValue.js +0 -91
  102. package/lib/util/parseBoxShadowValue.js +0 -84
  103. package/lib/util/parseDependency.js +0 -45
  104. package/lib/util/parseGlob.js +0 -34
  105. package/lib/util/parseObjectStyles.js +0 -34
  106. package/lib/util/pluginUtils.js +0 -283
  107. package/lib/util/prefixSelector.js +0 -37
  108. package/lib/util/removeAlphaVariables.js +0 -29
  109. package/lib/util/resolveConfig.js +0 -254
  110. package/lib/util/resolveConfigPath.js +0 -54
  111. package/lib/util/responsive.js +0 -22
  112. package/lib/util/splitAtTopLevelOnly.js +0 -43
  113. package/lib/util/tap.js +0 -12
  114. package/lib/util/toColorValue.js +0 -11
  115. package/lib/util/toPath.js +0 -30
  116. package/lib/util/transformThemeValue.js +0 -71
  117. package/lib/util/validateConfig.js +0 -24
  118. package/lib/util/validateFormalSyntax.js +0 -24
  119. package/lib/util/withAlphaVariable.js +0 -75
  120. package/nesting/index.js +0 -2
  121. package/oxide-node-api-shim/index.js +0 -21
  122. package/oxide-node-api-shim/package.json +0 -5
  123. package/peers/index.js +0 -79461
  124. package/plugin.d.ts +0 -11
  125. package/plugin.js +0 -2
  126. package/prettier.config.js +0 -19
  127. package/resolveConfig.d.ts +0 -12
  128. package/resolveConfig.js +0 -2
  129. package/screens.css +0 -1
  130. package/scripts/create-plugin-list.js +0 -10
  131. package/scripts/generate-types.js +0 -105
  132. package/scripts/release-channel.js +0 -18
  133. package/scripts/release-notes.js +0 -21
  134. package/scripts/swap-engines.js +0 -40
  135. package/scripts/type-utils.js +0 -27
  136. package/src/cli/build/deps.js +0 -56
  137. package/src/cli/build/index.js +0 -49
  138. package/src/cli/build/plugin.js +0 -439
  139. package/src/cli/build/utils.js +0 -76
  140. package/src/cli/build/watching.js +0 -227
  141. package/src/cli/help/index.js +0 -70
  142. package/src/cli/index.js +0 -234
  143. package/src/cli/init/index.js +0 -50
  144. package/src/cli-peer-dependencies.js +0 -15
  145. package/src/cli.js +0 -7
  146. package/src/constants.js +0 -17
  147. package/src/corePluginList.js +0 -1
  148. package/src/corePlugins.js +0 -2744
  149. package/src/css/LICENSE +0 -25
  150. package/src/css/preflight.css +0 -367
  151. package/src/featureFlags.js +0 -64
  152. package/src/index.js +0 -5
  153. package/src/lib/cacheInvalidation.js +0 -52
  154. package/src/lib/collapseAdjacentRules.js +0 -58
  155. package/src/lib/collapseDuplicateDeclarations.js +0 -93
  156. package/src/lib/content.js +0 -208
  157. package/src/lib/defaultExtractor.js +0 -217
  158. package/src/lib/detectNesting.js +0 -47
  159. package/src/lib/evaluateTailwindFunctions.js +0 -269
  160. package/src/lib/expandApplyAtRules.js +0 -606
  161. package/src/lib/expandTailwindAtRules.js +0 -285
  162. package/src/lib/findAtConfigPath.js +0 -48
  163. package/src/lib/generateRules.js +0 -899
  164. package/src/lib/getModuleDependencies.js +0 -39
  165. package/src/lib/normalizeTailwindDirectives.js +0 -84
  166. package/src/lib/offsets.js +0 -367
  167. package/src/lib/partitionApplyAtRules.js +0 -52
  168. package/src/lib/regex.js +0 -74
  169. package/src/lib/remap-bitfield.js +0 -82
  170. package/src/lib/resolveDefaultsAtRules.js +0 -163
  171. package/src/lib/setupContextUtils.js +0 -1308
  172. package/src/lib/setupTrackingContext.js +0 -171
  173. package/src/lib/sharedState.js +0 -67
  174. package/src/lib/substituteScreenAtRules.js +0 -19
  175. package/src/oxide/cli/build/deps.ts +0 -91
  176. package/src/oxide/cli/build/index.ts +0 -47
  177. package/src/oxide/cli/build/plugin.ts +0 -436
  178. package/src/oxide/cli/build/utils.ts +0 -74
  179. package/src/oxide/cli/build/watching.ts +0 -225
  180. package/src/oxide/cli/help/index.ts +0 -69
  181. package/src/oxide/cli/index.ts +0 -212
  182. package/src/oxide/cli/init/index.ts +0 -32
  183. package/src/oxide/cli.ts +0 -1
  184. package/src/oxide/postcss-plugin.ts +0 -1
  185. package/src/plugin.js +0 -47
  186. package/src/postcss-plugins/nesting/README.md +0 -42
  187. package/src/postcss-plugins/nesting/index.js +0 -13
  188. package/src/postcss-plugins/nesting/plugin.js +0 -80
  189. package/src/processTailwindFeatures.js +0 -58
  190. package/src/public/colors.js +0 -300
  191. package/src/public/create-plugin.js +0 -2
  192. package/src/public/default-config.js +0 -4
  193. package/src/public/default-theme.js +0 -4
  194. package/src/public/resolve-config.js +0 -7
  195. package/src/util/bigSign.js +0 -3
  196. package/src/util/buildMediaQuery.js +0 -22
  197. package/src/util/cloneDeep.js +0 -11
  198. package/src/util/cloneNodes.js +0 -28
  199. package/src/util/color.js +0 -73
  200. package/src/util/configurePlugins.js +0 -23
  201. package/src/util/createPlugin.js +0 -27
  202. package/src/util/createUtilityPlugin.js +0 -37
  203. package/src/util/dataTypes.js +0 -281
  204. package/src/util/defaults.js +0 -17
  205. package/src/util/escapeClassName.js +0 -8
  206. package/src/util/escapeCommas.js +0 -3
  207. package/src/util/flattenColorPalette.js +0 -13
  208. package/src/util/formatVariantSelector.js +0 -412
  209. package/src/util/getAllConfigs.js +0 -38
  210. package/src/util/hashConfig.js +0 -5
  211. package/src/util/isKeyframeRule.js +0 -3
  212. package/src/util/isPlainObject.js +0 -8
  213. package/src/util/isSyntacticallyValidPropertyValue.js +0 -61
  214. package/src/util/log.js +0 -29
  215. package/src/util/nameClass.js +0 -30
  216. package/src/util/negateValue.js +0 -24
  217. package/src/util/normalizeConfig.js +0 -300
  218. package/src/util/normalizeScreens.js +0 -140
  219. package/src/util/parseAnimationValue.js +0 -68
  220. package/src/util/parseBoxShadowValue.js +0 -72
  221. package/src/util/parseDependency.js +0 -44
  222. package/src/util/parseGlob.js +0 -24
  223. package/src/util/parseObjectStyles.js +0 -19
  224. package/src/util/pluginUtils.js +0 -314
  225. package/src/util/prefixSelector.js +0 -32
  226. package/src/util/removeAlphaVariables.js +0 -24
  227. package/src/util/resolveConfig.js +0 -277
  228. package/src/util/resolveConfigPath.js +0 -55
  229. package/src/util/responsive.js +0 -10
  230. package/src/util/splitAtTopLevelOnly.js +0 -45
  231. package/src/util/tap.js +0 -4
  232. package/src/util/toColorValue.js +0 -3
  233. package/src/util/toPath.js +0 -26
  234. package/src/util/transformThemeValue.js +0 -62
  235. package/src/util/validateConfig.js +0 -13
  236. package/src/util/validateFormalSyntax.js +0 -34
  237. package/src/util/withAlphaVariable.js +0 -49
  238. package/stubs/defaultConfig.stub.js +0 -956
  239. package/stubs/defaultPostCssConfig.stub.js +0 -6
  240. package/stubs/simpleConfig.stub.js +0 -8
  241. package/tailwind.css +0 -5
  242. package/types/config.d.ts +0 -367
  243. package/types/generated/.gitkeep +0 -0
  244. package/types/generated/colors.d.ts +0 -276
  245. package/types/generated/corePluginList.d.ts +0 -1
  246. package/types/generated/default-theme.d.ts +0 -345
  247. package/types/index.d.ts +0 -7
  248. package/variants.css +0 -1
package/README.md CHANGED
@@ -12,19 +12,18 @@
12
12
  A utility-first CSS framework for rapidly building custom user interfaces.
13
13
  </p>
14
14
 
15
-
16
15
  <p align="center">
17
- <a href="https://github.com/tailwindlabs/tailwindcss/actions"><img src="https://img.shields.io/github/actions/workflow/status/tailwindlabs/tailwindcss/ci-stable.yml?branch=master" alt="Build Status"></a>
16
+ <a href="https://github.com/tailwindlabs/tailwindcss/actions"><img src="https://img.shields.io/github/actions/workflow/status/tailwindlabs/tailwindcss/ci.yml?branch=next" alt="Build Status"></a>
18
17
  <a href="https://www.npmjs.com/package/tailwindcss"><img src="https://img.shields.io/npm/dt/tailwindcss.svg" alt="Total Downloads"></a>
19
18
  <a href="https://github.com/tailwindcss/tailwindcss/releases"><img src="https://img.shields.io/npm/v/tailwindcss.svg" alt="Latest Release"></a>
20
19
  <a href="https://github.com/tailwindcss/tailwindcss/blob/master/LICENSE"><img src="https://img.shields.io/npm/l/tailwindcss.svg" alt="License"></a>
21
20
  </p>
22
21
 
23
- ------
22
+ ---
24
23
 
25
24
  ## Documentation
26
25
 
27
- For full documentation, visit [tailwindcss.com](https://tailwindcss.com/).
26
+ For full documentation, visit [tailwindcss.com](https://tailwindcss.com).
28
27
 
29
28
  ## Community
30
29
 
@@ -32,10 +31,10 @@ For help, discussion about best practices, or any other conversation that would
32
31
 
33
32
  [Discuss Tailwind CSS on GitHub](https://github.com/tailwindcss/tailwindcss/discussions)
34
33
 
35
- For casual chit-chat with others using the framework:
34
+ For chatting with others using the framework:
36
35
 
37
36
  [Join the Tailwind CSS Discord Server](https://discord.gg/7NF8GNe)
38
37
 
39
38
  ## Contributing
40
39
 
41
- If you're interested in contributing to Tailwind CSS, please read our [contributing docs](https://github.com/tailwindcss/tailwindcss/blob/master/.github/CONTRIBUTING.md) **before submitting a pull request**.
40
+ If you're interested in contributing to Tailwind CSS, please read our [contributing docs](https://github.com/tailwindcss/tailwindcss/blob/next/.github/CONTRIBUTING.md) **before submitting a pull request**.
package/dist/lib.d.mts ADDED
@@ -0,0 +1,326 @@
1
+ interface ClassMetadata {
2
+ modifiers: string[];
3
+ }
4
+ type ClassEntry = [string, ClassMetadata];
5
+ interface SelectorOptions {
6
+ modifier?: string;
7
+ value?: string;
8
+ }
9
+ interface VariantEntry {
10
+ name: string;
11
+ isArbitrary: boolean;
12
+ values: string[];
13
+ hasDash: boolean;
14
+ selectors: (options: SelectorOptions) => string[];
15
+ }
16
+
17
+ declare class Theme {
18
+ private values;
19
+ constructor(values?: Map<string, string>);
20
+ add(key: string, value: string): void;
21
+ keysInNamespaces(themeKeys: ThemeKey[]): string[];
22
+ get(themeKeys: ThemeKey[]): string | null;
23
+ entries(): IterableIterator<[string, string]>;
24
+ clearNamespace(namespace: string): void;
25
+ resolveKey(candidateValue: string, themeKeys: ThemeKey[]): string | null;
26
+ var(themeKey: string): string | null;
27
+ resolve(candidateValue: string, themeKeys: ThemeKey[]): string | null;
28
+ resolveBare(candidateValue: string, themeKeys: ThemeKey[]): string | null;
29
+ resolveWith(candidateValue: string, themeKeys: ThemeKey[], nestedKeys?: `--${string}`[]): [string, Record<string, string>] | null;
30
+ namespace(namespace: string): Map<string | null, string>;
31
+ }
32
+ type ThemeKey = '--accent-color' | '--animate' | '--aspect-ratio' | '--backdrop-blur' | '--backdrop-brightness' | '--backdrop-contrast' | '--backdrop-grayscale' | '--backdrop-hue-rotate' | '--backdrop-invert' | '--backdrop-opacity' | '--backdrop-saturate' | '--backdrop-sepia' | '--background-color' | '--background-image' | '--blur' | '--border-color' | '--border-spacing' | '--border-width' | '--box-shadow-color' | '--breakpoint' | '--brightness' | '--caret-color' | '--color' | '--columns' | '--contrast' | '--cursor' | '--default-border-width' | '--default-ring-color' | '--default-ring-width' | '--divide-width' | '--divide-color' | '--drop-shadow' | '--fill' | '--flex-basis' | '--font-family' | '--font-size' | '--font-weight' | '--gap' | '--gradient-color-stop-positions' | '--grayscale' | '--grid-auto-columns' | '--grid-auto-rows' | '--grid-column' | '--grid-column-end' | '--grid-column-start' | '--grid-row' | '--grid-row-end' | '--grid-row-start' | '--grid-template-columns' | '--grid-template-rows' | '--height' | '--hue-rotate' | '--inset' | '--inset-shadow' | '--invert' | '--letter-spacing' | '--line-height' | '--line-clamp' | '--list-style-image' | '--list-style-type' | '--margin' | '--max-height' | '--max-width' | '--min-height' | '--min-width' | '--object-position' | '--opacity' | '--order' | '--outline-color' | '--outline-width' | '--outline-offset' | '--padding' | '--placeholder-color' | '--radius' | '--ring-color' | '--ring-offset-color' | '--ring-offset-width' | '--ring-width' | '--rotate' | '--saturate' | '--scale' | '--scroll-margin' | '--scroll-padding' | '--sepia' | '--shadow' | '--size' | '--skew' | '--space' | '--spacing' | '--stroke' | '--stroke-width' | '--text-color' | '--text-decoration-color' | '--text-decoration-thickness' | '--text-indent' | '--text-underline-offset' | '--transform-origin' | '--transition-delay' | '--transition-duration' | '--transition-property' | '--transition-timing-function' | '--translate' | '--width' | '--z-index';
33
+
34
+ type Rule = {
35
+ kind: 'rule';
36
+ selector: string;
37
+ nodes: AstNode[];
38
+ };
39
+ type Declaration = {
40
+ kind: 'declaration';
41
+ property: string;
42
+ value: string;
43
+ important: boolean;
44
+ };
45
+ type Comment = {
46
+ kind: 'comment';
47
+ value: string;
48
+ };
49
+ type AstNode = Rule | Declaration | Comment;
50
+
51
+ type ArbitraryUtilityValue = {
52
+ kind: 'arbitrary';
53
+ /**
54
+ * bg-[color:--my-color]
55
+ * ^^^^^
56
+ */
57
+ dataType: string | null;
58
+ /**
59
+ * bg-[#0088cc]
60
+ * ^^^^^^^
61
+ * bg-[--my_variable]
62
+ * var(^^^^^^^^^^^^^)
63
+ */
64
+ value: string;
65
+ /**
66
+ * bg-[--my_variable]
67
+ * ^^^^^^^^^^^^^
68
+ */
69
+ dashedIdent: string | null;
70
+ };
71
+ type NamedUtilityValue = {
72
+ kind: 'named';
73
+ /**
74
+ * bg-red-500
75
+ * ^^^^^^^
76
+ *
77
+ * w-1/2
78
+ * ^
79
+ */
80
+ value: string;
81
+ /**
82
+ * w-1/2
83
+ * ^^^
84
+ */
85
+ fraction: string | null;
86
+ };
87
+ type ArbitraryModifier = {
88
+ kind: 'arbitrary';
89
+ /**
90
+ * bg-red-500/[50%]
91
+ * ^^^
92
+ */
93
+ value: string;
94
+ /**
95
+ * bg-red-500/[--my_variable]
96
+ * ^^^^^^^^^^^^^
97
+ */
98
+ dashedIdent: string | null;
99
+ };
100
+ type NamedModifier = {
101
+ kind: 'named';
102
+ /**
103
+ * bg-red-500/50
104
+ * ^^
105
+ */
106
+ value: string;
107
+ };
108
+ type ArbitraryVariantValue = {
109
+ kind: 'arbitrary';
110
+ value: string;
111
+ };
112
+ type NamedVariantValue = {
113
+ kind: 'named';
114
+ value: string;
115
+ };
116
+ type Variant =
117
+ /**
118
+ * Arbitrary variants are variants that take a selector and generate a variant
119
+ * on the fly.
120
+ *
121
+ * E.g.: `[&_p]`
122
+ */
123
+ {
124
+ kind: 'arbitrary';
125
+ selector: string;
126
+ compounds: boolean;
127
+ }
128
+ /**
129
+ * Static variants are variants that don't take any arguments.
130
+ *
131
+ * E.g.: `hover`
132
+ */
133
+ | {
134
+ kind: 'static';
135
+ root: string;
136
+ compounds: boolean;
137
+ }
138
+ /**
139
+ * Functional variants are variants that can take an argument. The argument is
140
+ * either a named variant value or an arbitrary variant value.
141
+ *
142
+ * E.g.:
143
+ *
144
+ * - `aria-disabled`
145
+ * - `aria-[disabled]`
146
+ * - `@container-size` -> @container, with named value `size`
147
+ * - `@container-[inline-size]` -> @container, with arbitrary variant value `inline-size`
148
+ * - `@container` -> @container, with no value
149
+ */
150
+ | {
151
+ kind: 'functional';
152
+ root: string;
153
+ value: ArbitraryVariantValue | NamedVariantValue | null;
154
+ modifier: ArbitraryModifier | NamedModifier | null;
155
+ compounds: boolean;
156
+ }
157
+ /**
158
+ * Compound variants are variants that take another variant as an argument.
159
+ *
160
+ * E.g.:
161
+ *
162
+ * - `has-[&_p]`
163
+ * - `group-*`
164
+ * - `peer-*`
165
+ */
166
+ | {
167
+ kind: 'compound';
168
+ root: string;
169
+ modifier: ArbitraryModifier | NamedModifier | null;
170
+ variant: Variant;
171
+ compounds: boolean;
172
+ };
173
+ type Candidate =
174
+ /**
175
+ * Arbitrary candidates are candidates that register utilities on the fly with
176
+ * a property and a value.
177
+ *
178
+ * E.g.:
179
+ *
180
+ * - `[color:red]`
181
+ * - `[color:red]/50`
182
+ * - `[color:red]/50!`
183
+ */
184
+ {
185
+ kind: 'arbitrary';
186
+ property: string;
187
+ value: string;
188
+ modifier: ArbitraryModifier | NamedModifier | null;
189
+ variants: Variant[];
190
+ important: boolean;
191
+ }
192
+ /**
193
+ * Static candidates are candidates that don't take any arguments.
194
+ *
195
+ * E.g.:
196
+ *
197
+ * - `underline`
198
+ * - `flex`
199
+ */
200
+ | {
201
+ kind: 'static';
202
+ root: string;
203
+ variants: Variant[];
204
+ negative: boolean;
205
+ important: boolean;
206
+ }
207
+ /**
208
+ * Functional candidates are candidates that can take an argument.
209
+ *
210
+ * E.g.:
211
+ *
212
+ * - `bg-red-500`
213
+ * - `bg-[#0088cc]`
214
+ * - `w-1/2`
215
+ */
216
+ | {
217
+ kind: 'functional';
218
+ root: string;
219
+ value: ArbitraryUtilityValue | NamedUtilityValue | null;
220
+ modifier: ArbitraryModifier | NamedModifier | null;
221
+ variants: Variant[];
222
+ negative: boolean;
223
+ important: boolean;
224
+ };
225
+
226
+ type CompileFn<T extends Candidate['kind']> = (value: Extract<Candidate, {
227
+ kind: T;
228
+ }>) => AstNode[] | undefined;
229
+ interface SuggestionGroup {
230
+ supportsNegative?: boolean;
231
+ values: (string | null)[];
232
+ modifiers: string[];
233
+ }
234
+ declare class Utilities {
235
+ private utilities;
236
+ private completions;
237
+ static(name: string, compileFn: CompileFn<'static'>): void;
238
+ functional(name: string, compileFn: CompileFn<'functional'>): void;
239
+ arbitrary(compileFn: CompileFn<'arbitrary'>): void;
240
+ has(name: string): boolean;
241
+ get(name: string | symbol): {
242
+ kind: "arbitrary" | "static" | "functional";
243
+ compileFn: CompileFn<any>;
244
+ } | undefined;
245
+ kind(name: string): "arbitrary" | "static" | "functional";
246
+ getCompletions(name: string): SuggestionGroup[];
247
+ suggest(name: string, groups: () => SuggestionGroup[]): void;
248
+ keys(): IterableIterator<string | symbol>;
249
+ entries(): IterableIterator<[string | symbol, {
250
+ kind: "arbitrary" | "static" | "functional";
251
+ compileFn: CompileFn<any>;
252
+ }]>;
253
+ getArbitrary(): CompileFn<any>;
254
+ private set;
255
+ }
256
+
257
+ type VariantFn<T extends Variant['kind']> = (rule: Rule, variant: Extract<Variant, {
258
+ kind: T;
259
+ }>) => null | void;
260
+ type CompareFn = (a: Variant, z: Variant) => number;
261
+ declare class Variants {
262
+ private compareFns;
263
+ private variants;
264
+ private completions;
265
+ /**
266
+ * Registering a group of variants should result in the same sort number for
267
+ * all the variants. This is to ensure that the variants are applied in the
268
+ * correct order.
269
+ */
270
+ private groupOrder;
271
+ /**
272
+ * Keep track of the last sort order instead of using the size of the map to
273
+ * avoid unnecessarily skipping order numbers.
274
+ */
275
+ private lastOrder;
276
+ static(name: string, applyFn: VariantFn<'static'>, { compounds }?: {
277
+ compounds?: boolean;
278
+ }): void;
279
+ functional(name: string, applyFn: VariantFn<'functional'>, { compounds }?: {
280
+ compounds?: boolean;
281
+ }): void;
282
+ compound(name: string, applyFn: VariantFn<'compound'>, { compounds }?: {
283
+ compounds?: boolean;
284
+ }): void;
285
+ group(fn: () => void, compareFn?: CompareFn): void;
286
+ has(name: string): boolean;
287
+ get(name: string): {
288
+ kind: "arbitrary" | "static" | "functional" | "compound";
289
+ order: number;
290
+ applyFn: VariantFn<any>;
291
+ compounds: boolean;
292
+ } | undefined;
293
+ kind(name: string): "arbitrary" | "static" | "functional" | "compound";
294
+ compounds(name: string): boolean;
295
+ suggest(name: string, suggestions: () => string[]): void;
296
+ getCompletions(name: string): string[];
297
+ compare(a: Variant | null, z: Variant | null): number;
298
+ keys(): IterableIterator<string>;
299
+ entries(): IterableIterator<[string, {
300
+ kind: "arbitrary" | "static" | "functional" | "compound";
301
+ order: number;
302
+ applyFn: VariantFn<any>;
303
+ compounds: boolean;
304
+ }]>;
305
+ private set;
306
+ private nextOrder;
307
+ }
308
+
309
+ type DesignSystem = {
310
+ theme: Theme;
311
+ utilities: Utilities;
312
+ variants: Variants;
313
+ candidatesToCss(classes: string[]): (string | null)[];
314
+ getClassOrder(classes: string[]): [string, bigint | null][];
315
+ getClassList(): ClassEntry[];
316
+ getVariants(): VariantEntry[];
317
+ };
318
+
319
+ declare function compile(css: string, rawCandidates: string[]): string;
320
+ declare function optimizeCss(input: string, { file, minify }?: {
321
+ file?: string;
322
+ minify?: boolean;
323
+ }): string;
324
+ declare function __unstable__loadDesignSystem(css: string): DesignSystem;
325
+
326
+ export { __unstable__loadDesignSystem, compile, optimizeCss };
package/dist/lib.d.ts ADDED
@@ -0,0 +1,326 @@
1
+ interface ClassMetadata {
2
+ modifiers: string[];
3
+ }
4
+ type ClassEntry = [string, ClassMetadata];
5
+ interface SelectorOptions {
6
+ modifier?: string;
7
+ value?: string;
8
+ }
9
+ interface VariantEntry {
10
+ name: string;
11
+ isArbitrary: boolean;
12
+ values: string[];
13
+ hasDash: boolean;
14
+ selectors: (options: SelectorOptions) => string[];
15
+ }
16
+
17
+ declare class Theme {
18
+ private values;
19
+ constructor(values?: Map<string, string>);
20
+ add(key: string, value: string): void;
21
+ keysInNamespaces(themeKeys: ThemeKey[]): string[];
22
+ get(themeKeys: ThemeKey[]): string | null;
23
+ entries(): IterableIterator<[string, string]>;
24
+ clearNamespace(namespace: string): void;
25
+ resolveKey(candidateValue: string, themeKeys: ThemeKey[]): string | null;
26
+ var(themeKey: string): string | null;
27
+ resolve(candidateValue: string, themeKeys: ThemeKey[]): string | null;
28
+ resolveBare(candidateValue: string, themeKeys: ThemeKey[]): string | null;
29
+ resolveWith(candidateValue: string, themeKeys: ThemeKey[], nestedKeys?: `--${string}`[]): [string, Record<string, string>] | null;
30
+ namespace(namespace: string): Map<string | null, string>;
31
+ }
32
+ type ThemeKey = '--accent-color' | '--animate' | '--aspect-ratio' | '--backdrop-blur' | '--backdrop-brightness' | '--backdrop-contrast' | '--backdrop-grayscale' | '--backdrop-hue-rotate' | '--backdrop-invert' | '--backdrop-opacity' | '--backdrop-saturate' | '--backdrop-sepia' | '--background-color' | '--background-image' | '--blur' | '--border-color' | '--border-spacing' | '--border-width' | '--box-shadow-color' | '--breakpoint' | '--brightness' | '--caret-color' | '--color' | '--columns' | '--contrast' | '--cursor' | '--default-border-width' | '--default-ring-color' | '--default-ring-width' | '--divide-width' | '--divide-color' | '--drop-shadow' | '--fill' | '--flex-basis' | '--font-family' | '--font-size' | '--font-weight' | '--gap' | '--gradient-color-stop-positions' | '--grayscale' | '--grid-auto-columns' | '--grid-auto-rows' | '--grid-column' | '--grid-column-end' | '--grid-column-start' | '--grid-row' | '--grid-row-end' | '--grid-row-start' | '--grid-template-columns' | '--grid-template-rows' | '--height' | '--hue-rotate' | '--inset' | '--inset-shadow' | '--invert' | '--letter-spacing' | '--line-height' | '--line-clamp' | '--list-style-image' | '--list-style-type' | '--margin' | '--max-height' | '--max-width' | '--min-height' | '--min-width' | '--object-position' | '--opacity' | '--order' | '--outline-color' | '--outline-width' | '--outline-offset' | '--padding' | '--placeholder-color' | '--radius' | '--ring-color' | '--ring-offset-color' | '--ring-offset-width' | '--ring-width' | '--rotate' | '--saturate' | '--scale' | '--scroll-margin' | '--scroll-padding' | '--sepia' | '--shadow' | '--size' | '--skew' | '--space' | '--spacing' | '--stroke' | '--stroke-width' | '--text-color' | '--text-decoration-color' | '--text-decoration-thickness' | '--text-indent' | '--text-underline-offset' | '--transform-origin' | '--transition-delay' | '--transition-duration' | '--transition-property' | '--transition-timing-function' | '--translate' | '--width' | '--z-index';
33
+
34
+ type Rule = {
35
+ kind: 'rule';
36
+ selector: string;
37
+ nodes: AstNode[];
38
+ };
39
+ type Declaration = {
40
+ kind: 'declaration';
41
+ property: string;
42
+ value: string;
43
+ important: boolean;
44
+ };
45
+ type Comment = {
46
+ kind: 'comment';
47
+ value: string;
48
+ };
49
+ type AstNode = Rule | Declaration | Comment;
50
+
51
+ type ArbitraryUtilityValue = {
52
+ kind: 'arbitrary';
53
+ /**
54
+ * bg-[color:--my-color]
55
+ * ^^^^^
56
+ */
57
+ dataType: string | null;
58
+ /**
59
+ * bg-[#0088cc]
60
+ * ^^^^^^^
61
+ * bg-[--my_variable]
62
+ * var(^^^^^^^^^^^^^)
63
+ */
64
+ value: string;
65
+ /**
66
+ * bg-[--my_variable]
67
+ * ^^^^^^^^^^^^^
68
+ */
69
+ dashedIdent: string | null;
70
+ };
71
+ type NamedUtilityValue = {
72
+ kind: 'named';
73
+ /**
74
+ * bg-red-500
75
+ * ^^^^^^^
76
+ *
77
+ * w-1/2
78
+ * ^
79
+ */
80
+ value: string;
81
+ /**
82
+ * w-1/2
83
+ * ^^^
84
+ */
85
+ fraction: string | null;
86
+ };
87
+ type ArbitraryModifier = {
88
+ kind: 'arbitrary';
89
+ /**
90
+ * bg-red-500/[50%]
91
+ * ^^^
92
+ */
93
+ value: string;
94
+ /**
95
+ * bg-red-500/[--my_variable]
96
+ * ^^^^^^^^^^^^^
97
+ */
98
+ dashedIdent: string | null;
99
+ };
100
+ type NamedModifier = {
101
+ kind: 'named';
102
+ /**
103
+ * bg-red-500/50
104
+ * ^^
105
+ */
106
+ value: string;
107
+ };
108
+ type ArbitraryVariantValue = {
109
+ kind: 'arbitrary';
110
+ value: string;
111
+ };
112
+ type NamedVariantValue = {
113
+ kind: 'named';
114
+ value: string;
115
+ };
116
+ type Variant =
117
+ /**
118
+ * Arbitrary variants are variants that take a selector and generate a variant
119
+ * on the fly.
120
+ *
121
+ * E.g.: `[&_p]`
122
+ */
123
+ {
124
+ kind: 'arbitrary';
125
+ selector: string;
126
+ compounds: boolean;
127
+ }
128
+ /**
129
+ * Static variants are variants that don't take any arguments.
130
+ *
131
+ * E.g.: `hover`
132
+ */
133
+ | {
134
+ kind: 'static';
135
+ root: string;
136
+ compounds: boolean;
137
+ }
138
+ /**
139
+ * Functional variants are variants that can take an argument. The argument is
140
+ * either a named variant value or an arbitrary variant value.
141
+ *
142
+ * E.g.:
143
+ *
144
+ * - `aria-disabled`
145
+ * - `aria-[disabled]`
146
+ * - `@container-size` -> @container, with named value `size`
147
+ * - `@container-[inline-size]` -> @container, with arbitrary variant value `inline-size`
148
+ * - `@container` -> @container, with no value
149
+ */
150
+ | {
151
+ kind: 'functional';
152
+ root: string;
153
+ value: ArbitraryVariantValue | NamedVariantValue | null;
154
+ modifier: ArbitraryModifier | NamedModifier | null;
155
+ compounds: boolean;
156
+ }
157
+ /**
158
+ * Compound variants are variants that take another variant as an argument.
159
+ *
160
+ * E.g.:
161
+ *
162
+ * - `has-[&_p]`
163
+ * - `group-*`
164
+ * - `peer-*`
165
+ */
166
+ | {
167
+ kind: 'compound';
168
+ root: string;
169
+ modifier: ArbitraryModifier | NamedModifier | null;
170
+ variant: Variant;
171
+ compounds: boolean;
172
+ };
173
+ type Candidate =
174
+ /**
175
+ * Arbitrary candidates are candidates that register utilities on the fly with
176
+ * a property and a value.
177
+ *
178
+ * E.g.:
179
+ *
180
+ * - `[color:red]`
181
+ * - `[color:red]/50`
182
+ * - `[color:red]/50!`
183
+ */
184
+ {
185
+ kind: 'arbitrary';
186
+ property: string;
187
+ value: string;
188
+ modifier: ArbitraryModifier | NamedModifier | null;
189
+ variants: Variant[];
190
+ important: boolean;
191
+ }
192
+ /**
193
+ * Static candidates are candidates that don't take any arguments.
194
+ *
195
+ * E.g.:
196
+ *
197
+ * - `underline`
198
+ * - `flex`
199
+ */
200
+ | {
201
+ kind: 'static';
202
+ root: string;
203
+ variants: Variant[];
204
+ negative: boolean;
205
+ important: boolean;
206
+ }
207
+ /**
208
+ * Functional candidates are candidates that can take an argument.
209
+ *
210
+ * E.g.:
211
+ *
212
+ * - `bg-red-500`
213
+ * - `bg-[#0088cc]`
214
+ * - `w-1/2`
215
+ */
216
+ | {
217
+ kind: 'functional';
218
+ root: string;
219
+ value: ArbitraryUtilityValue | NamedUtilityValue | null;
220
+ modifier: ArbitraryModifier | NamedModifier | null;
221
+ variants: Variant[];
222
+ negative: boolean;
223
+ important: boolean;
224
+ };
225
+
226
+ type CompileFn<T extends Candidate['kind']> = (value: Extract<Candidate, {
227
+ kind: T;
228
+ }>) => AstNode[] | undefined;
229
+ interface SuggestionGroup {
230
+ supportsNegative?: boolean;
231
+ values: (string | null)[];
232
+ modifiers: string[];
233
+ }
234
+ declare class Utilities {
235
+ private utilities;
236
+ private completions;
237
+ static(name: string, compileFn: CompileFn<'static'>): void;
238
+ functional(name: string, compileFn: CompileFn<'functional'>): void;
239
+ arbitrary(compileFn: CompileFn<'arbitrary'>): void;
240
+ has(name: string): boolean;
241
+ get(name: string | symbol): {
242
+ kind: "arbitrary" | "static" | "functional";
243
+ compileFn: CompileFn<any>;
244
+ } | undefined;
245
+ kind(name: string): "arbitrary" | "static" | "functional";
246
+ getCompletions(name: string): SuggestionGroup[];
247
+ suggest(name: string, groups: () => SuggestionGroup[]): void;
248
+ keys(): IterableIterator<string | symbol>;
249
+ entries(): IterableIterator<[string | symbol, {
250
+ kind: "arbitrary" | "static" | "functional";
251
+ compileFn: CompileFn<any>;
252
+ }]>;
253
+ getArbitrary(): CompileFn<any>;
254
+ private set;
255
+ }
256
+
257
+ type VariantFn<T extends Variant['kind']> = (rule: Rule, variant: Extract<Variant, {
258
+ kind: T;
259
+ }>) => null | void;
260
+ type CompareFn = (a: Variant, z: Variant) => number;
261
+ declare class Variants {
262
+ private compareFns;
263
+ private variants;
264
+ private completions;
265
+ /**
266
+ * Registering a group of variants should result in the same sort number for
267
+ * all the variants. This is to ensure that the variants are applied in the
268
+ * correct order.
269
+ */
270
+ private groupOrder;
271
+ /**
272
+ * Keep track of the last sort order instead of using the size of the map to
273
+ * avoid unnecessarily skipping order numbers.
274
+ */
275
+ private lastOrder;
276
+ static(name: string, applyFn: VariantFn<'static'>, { compounds }?: {
277
+ compounds?: boolean;
278
+ }): void;
279
+ functional(name: string, applyFn: VariantFn<'functional'>, { compounds }?: {
280
+ compounds?: boolean;
281
+ }): void;
282
+ compound(name: string, applyFn: VariantFn<'compound'>, { compounds }?: {
283
+ compounds?: boolean;
284
+ }): void;
285
+ group(fn: () => void, compareFn?: CompareFn): void;
286
+ has(name: string): boolean;
287
+ get(name: string): {
288
+ kind: "arbitrary" | "static" | "functional" | "compound";
289
+ order: number;
290
+ applyFn: VariantFn<any>;
291
+ compounds: boolean;
292
+ } | undefined;
293
+ kind(name: string): "arbitrary" | "static" | "functional" | "compound";
294
+ compounds(name: string): boolean;
295
+ suggest(name: string, suggestions: () => string[]): void;
296
+ getCompletions(name: string): string[];
297
+ compare(a: Variant | null, z: Variant | null): number;
298
+ keys(): IterableIterator<string>;
299
+ entries(): IterableIterator<[string, {
300
+ kind: "arbitrary" | "static" | "functional" | "compound";
301
+ order: number;
302
+ applyFn: VariantFn<any>;
303
+ compounds: boolean;
304
+ }]>;
305
+ private set;
306
+ private nextOrder;
307
+ }
308
+
309
+ type DesignSystem = {
310
+ theme: Theme;
311
+ utilities: Utilities;
312
+ variants: Variants;
313
+ candidatesToCss(classes: string[]): (string | null)[];
314
+ getClassOrder(classes: string[]): [string, bigint | null][];
315
+ getClassList(): ClassEntry[];
316
+ getVariants(): VariantEntry[];
317
+ };
318
+
319
+ declare function compile(css: string, rawCandidates: string[]): string;
320
+ declare function optimizeCss(input: string, { file, minify }?: {
321
+ file?: string;
322
+ minify?: boolean;
323
+ }): string;
324
+ declare function __unstable__loadDesignSystem(css: string): DesignSystem;
325
+
326
+ export { __unstable__loadDesignSystem, compile, optimizeCss };